Package com.aquafx_project.demo

Source Code of com.aquafx_project.demo.AquaNetworkDemo$NetworkCell

package com.aquafx_project.demo;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.geometry.VPos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.CheckMenuItem;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.Label;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.control.Separator;
import javafx.scene.control.SeparatorMenuItem;
import javafx.scene.control.TextField;
import javafx.scene.control.ToolBar;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyCombination;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import javafx.util.Callback;

import com.aquafx_project.AquaFx;
import com.aquafx_project.controls.skin.styles.ButtonType;
import com.aquafx_project.controls.skin.styles.MacOSDefaultIcons;
import com.aquafx_project.controls.skin.styles.TextFieldType;
import com.aquafx_project.nativestuff.NsImageIcon;
import com.aquafx_project.nativestuff.NsImageIconLoader;

public class AquaNetworkDemo extends Application {
    private int sceneHeight = 588;

    @Override public void start(Stage stage) throws Exception {
        AquaFx.styleStage(stage, StageStyle.UNIFIED);
        stage.setResizable(false);

        VBox mainBox = new VBox();

        ToolBar toolBar = new ToolBar();
        Button tbBack = new Button();
        AquaFx.createButtonStyler().setIcon(MacOSDefaultIcons.LEFT).setType(ButtonType.LEFT_PILL).style(tbBack);
        Button tbForward = new Button();
        tbForward.setDisable(true);
        AquaFx.createButtonStyler().setIcon(MacOSDefaultIcons.RIGHT).setType(ButtonType.RIGHT_PILL).style(tbForward);
        HBox separator = new HBox();
        separator.setPrefSize(15, 1);
        Button btnAll = new Button("Alle einblenden");
        HBox separator2 = new HBox();
        separator2.setPrefSize(279, 1);
        TextField search = new TextField();
        AquaFx.createTextFieldStyler().setType(TextFieldType.SEARCH).style(search);
        toolBar.getItems().addAll(tbBack, tbForward, separator, btnAll, separator2, search);

        mainBox.getChildren().add(toolBar);
        /*
         * The top content
         */
        HBox header = new HBox();
        header.setSpacing(5);
        header.setPadding(new Insets(20, 0, 5, 0));
        header.setAlignment(Pos.CENTER);
        Label labelSurrounding = new Label("Umgebung:");
        ChoiceBox<Object> choices = new ChoiceBox<Object>();
        choices.setItems(FXCollections.observableArrayList("Automatisch", new Separator(), "Umgebungen bearbeiten ..."));
        choices.getSelectionModel().selectFirst();
        header.getChildren().addAll(labelSurrounding, choices);
        mainBox.getChildren().add(header);

        /*
         * The left-side content
         */
        HBox content = new HBox();
        content.setPadding(new Insets(10, 15, 10, 20));
        content.setSpacing(10);

        ListView<String> list = new ListView<String>();
        ObservableList<String> listItems = FXCollections.observableArrayList("WLAN", "Bluetooth-PAN");
        list.setItems(listItems);
        list.setPrefWidth(200);

        // Create a CellFactory for ListCells
        list.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
            @Override public ListCell<String> call(ListView<String> list) {
                return new NetworkCell();
            }
        });

        content.getChildren().add(list);

        /*
         * The right-side content
         */
        GridPane grid = new GridPane();
        // grid.setGridLinesVisible(true);
        grid.setHgap(10);
        grid.setVgap(10);
        grid.setPadding(new Insets(18, 5, 8, 15));
        AquaFx.setGroupBox(grid);

        Label labelStatus = new Label("Status:");
        GridPane.setHalignment(labelStatus, HPos.RIGHT);
        grid.add(labelStatus, 0, 0, 2, 1);
        Label labelConnected = new Label("Verbunden");
        labelConnected.setStyle("-fx-font-weight: bold;");
        grid.add(labelConnected, 2, 0);
        Button btnDisableWlan = new Button("WLAN deaktivieren");
        GridPane.setHalignment(btnDisableWlan, HPos.RIGHT);
        grid.add(btnDisableWlan, 3, 0);
        Label labelCurrent = new Label("\"WLAN\" ist mit \"PrettyFlyForAWiFi\" verbunden und \n hat die IP-Adresse 192.168.0.104.");
        labelCurrent.setStyle("-fx-font-size: 11");
        grid.add(labelCurrent, 2, 2, 3, 1);
        Label labelNetworkName = new Label("Netzwerkname:");
        GridPane.setHalignment(labelNetworkName, HPos.RIGHT);
        grid.add(labelNetworkName, 0, 3);
        ChoiceBox<Object> choicesNetwork = new ChoiceBox<Object>();
        choicesNetwork.setItems(FXCollections.observableArrayList("PrettyFlyForAWiFi", new Separator(),
                "Mit anderem Netzwerk verbinden ...", "Netzwerk anlegen"));
        choicesNetwork.getSelectionModel().select(2);
        GridPane.setHalignment(choicesNetwork, HPos.RIGHT);
        GridPane.getHgrow(choicesNetwork);
        grid.add(choicesNetwork, 1, 3, 3, 1);
        CheckBox checkShowNew = new CheckBox("Auf neue Netzwerke hinweisen");
        checkShowNew.setSelected(true);
        grid.add(checkShowNew, 1, 4, 3, 1);
        Label labelExplanation = new Label("Bekannte Netzwerke wewrden automatisch verbunden. \n" + "Falls kein bekanntes Netzwerk vorhanden ist, werden \n" + "Sie vor dem Verbinden mit einem neuen Netzwerk \n" + "gefragt.");
        labelExplanation.setStyle("-fx-font-size: 10");
        grid.add(labelExplanation, 1, 5, 3, 1);
        VBox spacer = new VBox();
        spacer.setPrefHeight(140);
        spacer.setPrefWidth(200);
        grid.add(spacer, 3, 6);
        CheckBox chekShowState = new CheckBox("WLAN-Status in der \n" + "Men\u00FCleiste anzeigen");
        chekShowState.setSelected(true);
        GridPane.setValignment(chekShowState, VPos.TOP);
        grid.add(chekShowState, 0, 7, 2, 1);
        Button btmMore = new Button("Weitere Optionen ...");
        GridPane.setHalignment(btmMore, HPos.RIGHT);
        GridPane.setValignment(btmMore, VPos.BOTTOM);
        grid.add(btmMore, 2, 7, 2, 1);
        Button helpBtn = new Button("?");
        AquaFx.createButtonStyler().setType(ButtonType.HELP).style(helpBtn);
        GridPane.setValignment(helpBtn, VPos.BOTTOM);
        GridPane.setHalignment(helpBtn, HPos.RIGHT);
        grid.add(helpBtn, 4, 7);

        content.getChildren().add(grid);
        mainBox.getChildren().add(content);

        /*
         * Footer
         */
        HBox footerBox = new HBox();
        footerBox.setSpacing(5);
        footerBox.setAlignment(Pos.BOTTOM_LEFT);
        footerBox.setPadding(new Insets(0, 0, 5, 15));
        Image image = new Image(AquaFx.class.getResource("demo/images/lock_open.png").toExternalForm());
        ImageView lockView = new ImageView(image);
        lockView.setPreserveRatio(true);
        lockView.setFitHeight(36);
        footerBox.getChildren().add(lockView);
        Label info = new Label("Zum Sch\u00FCtzen auf das Schloss klicken.");
        info.setStyle("-fx-font-size: 12");
        info.setPadding(new Insets(0, 0, 3, 0));
        footerBox.getChildren().add(info);
        mainBox.getChildren().add(footerBox);

        HBox anchorButtons = new HBox();
        anchorButtons.setPadding(new Insets(0, 15, 0, 0));
        anchorButtons.setSpacing(15);
        anchorButtons.setAlignment(Pos.BOTTOM_RIGHT);
        Button btnAssis = new Button("Assistent ...");
        anchorButtons.getChildren().add(btnAssis);
        Button btnRev = new Button("Zur\u00FCcksetzen");
        btnRev.setDisable(true);
        anchorButtons.getChildren().add(btnRev);
        Button btnUse = new Button("Anwenden");
        btnUse.setDisable(true);
        anchorButtons.getChildren().add(btnUse);
        mainBox.getChildren().add(anchorButtons);

        /*
         * MenuBar
         */
        MenuBar menuBar = new MenuBar();
        Menu menuSystemPreferences = new Menu("Systemeinstellungen");
        Menu menuServices = new Menu("Dienste");
        MenuItem menuNoService = new MenuItem("Keine Dienste Verf\u00FCgbar");
        menuNoService.setDisable(true);
        MenuItem menuServPref = new MenuItem("Dienste Enistellungen ...");
        menuServices.getItems().addAll(menuNoService, menuServPref);
        MenuItem menuHide = new MenuItem("Sytemeinstellungen ausblenden");
        menuHide.setAccelerator(KeyCombination.keyCombination("shortcut+H"));
        MenuItem menuHideOthers = new MenuItem("Andere ausblenden");
        menuHideOthers.setAccelerator(KeyCombination.keyCombination("Alt+shortcut+H"));
        MenuItem menuShowAll = new MenuItem("Alle einblenden");
        menuShowAll.setDisable(true);
        menuSystemPreferences.getItems().addAll(new MenuItem("\u00DCber Systemeinstellungen"), new SeparatorMenuItem(), menuServices,
                new SeparatorMenuItem(), menuHide, menuHideOthers, menuShowAll, new MenuItem("Systemeinstellungen beenden"));

        Menu menuEdit = new Menu("Bearbeiten");
        menuEdit.getItems().addAll(new MenuItem("..."));

        Menu menuPreferences = new Menu("Einstellungen");
        menuPreferences.getItems().addAll(new MenuItem("..."));

        Menu menuWindow = new Menu("Fenster");
        MenuItem windowClose = new MenuItem("Schlie\u00dfen");
        windowClose.setAccelerator(KeyCombination.keyCombination("shortcut+W"));
        MenuItem windowDock = new MenuItem("Im Dock ablegen");
        windowDock.setAccelerator(KeyCombination.keyCombination("shortcut+M"));
        CheckMenuItem actual = new CheckMenuItem("Datum & Uhrzeit");
        actual.setSelected(true);
        menuWindow.getItems().addAll(windowClose, windowDock, new SeparatorMenuItem(), actual);

        Menu menuHelp = new Menu("Hilfe");
        MenuItem help = new MenuItem("Systemeinstellungen-Hilfe");
        help.setAccelerator(KeyCombination.keyCombination("shortcut+?"));
        menuHelp.getItems().addAll(new MenuItem("Schlie\u00dfen"), help);

        menuBar.getMenus().addAll(menuSystemPreferences, menuEdit, menuPreferences, menuWindow, menuHelp);
        mainBox.getChildren().add(menuBar);

        Scene myScene = new Scene(mainBox, 667, sceneHeight);
        AquaFx.style();
        stage.setTitle("Netzwerk (AquaFX)");
        stage.setScene(myScene);
        stage.show();

    }

    public static void main(String[] args) {
        launch(args);
    }

    static class NetworkCell extends ListCell<String> {
        @Override protected void updateItem(String item, boolean empty) {
            super.updateItem(item, empty);
            if (item != null) {

                HBox cellBox = new HBox();
                cellBox.setAlignment(Pos.CENTER_LEFT);
                cellBox.setSpacing(5);
                cellBox.setPadding(new Insets(2, 5, 3, 2));
                ImageView dotImage;
                VBox texts = new VBox();
                texts.setPrefWidth(95);
                texts.setAlignment(Pos.CENTER_LEFT);
                final Label type = new Label(item);
                final Label legend = new Label(item);
                legend.setStyle("-fx-font-size: 11; -fx-text-fill: gray;");
                ImageView typeImage;

                if (item.equals("WLAN")) {
                    dotImage = new ImageView(NsImageIconLoader.load(NsImageIcon.STATUS_AVAILABLE));
                    legend.setText("Verbunden");
                    Image img = new Image(AquaFx.class.getResource("demo/images/wifi.png").toExternalForm());
                    typeImage = new ImageView(img);
                    typeImage.setPreserveRatio(true);
                    typeImage.setFitHeight(32);
                } else {
                    dotImage = new ImageView(NsImageIconLoader.load(NsImageIcon.STATUS_PARTIALLY_AVAILABLE));
                    legend.setText("Keine IP-Adresse");
                    Image img = new Image(AquaFx.class.getResource("demo/images/bluetooth.png").toExternalForm());
                    typeImage = new ImageView(img);
                    typeImage.setPreserveRatio(true);
                    typeImage.setFitHeight(32);
                }

                cellBox.getChildren().add(dotImage);
                texts.getChildren().add(type);
                texts.getChildren().add(legend);
                cellBox.getChildren().add(texts);
                cellBox.getChildren().add(typeImage);

                setGraphic(cellBox);

                selectedProperty().addListener(new ChangeListener<Boolean>() {

                    @Override public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue,
                            Boolean newValue) {
                        if (newValue) {
                            type.setStyle("-fx-text-fill: white;");
                            legend.setStyle("-fx-font-size: 11; -fx-text-fill: white;");
                        } else {
                            type.setStyle("-fx-text-fill: black;");
                            legend.setStyle("-fx-font-size: 11; -fx-text-fill: gray;");
                        }
                    }
                });
            }

        }
    }
}
TOP

Related Classes of com.aquafx_project.demo.AquaNetworkDemo$NetworkCell

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.