/*********************************************************************************** * * Copyright (c) 2014 Kamil Baczkowicz * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Eclipse Distribution License v1.0 which accompany this distribution. * * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html * * The Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * * Kamil Baczkowicz - initial API and implementation and/or initial documentation * */ package pl.baczkowicz.mqttspy.ui; import java.net.URL; import java.util.ResourceBundle; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.ProgressIndicator; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.FlowPane; import javafx.scene.layout.VBox; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import pl.baczkowicz.mqttspy.configuration.ConfigurationManager; import pl.baczkowicz.mqttspy.ui.controlpanel.ItemStatus; import pl.baczkowicz.spy.ui.utils.ImageUtils; /** * Controller for a single control panel item. */ public class ControlPanelItemController extends AnchorPane implements Initializable { final static Logger logger = LoggerFactory.getLogger(ControlPanelItemController.class); @FXML private ImageView statusIcon; @FXML private VBox itemsBox; @FXML private Label titleText; @FXML private Label detailsText; @FXML private Button smallButton1; @FXML private FlowPane details; @FXML private Button smallButton2; @FXML private ProgressIndicator progressIndicator; private ItemStatus status = ItemStatus.ERROR; private ConfigurationManager configurationManager; private boolean showProgress; // =============================== // === Initialisation ============ // =============================== public void initialize(URL location, ResourceBundle resources) { // } public void init() { // } public static void setButtonProperties(final Button button, final String imageName, final boolean visibility, final EventHandler<ActionEvent> action) { button.setVisible(true); button.setGraphic(ImageUtils.createIcon(imageName)); button.setOnAction(action); } public static void setButtonProperties(final Button button, final String imageLocation, final boolean visibility) { button.setVisible(true); button.setGraphic(new ImageView(new Image(ControlPanelItemController.class.getResource(imageLocation).toString()))); } public Button getButton1() { return smallButton1; } public Button getButton2() { return smallButton2; } public static String getStatusIconName(final ItemStatus status) { String imageLocation; switch (status) { case OK: imageLocation = "dialog-ok-apply-large"; break; case INFO: imageLocation = "dialog-information-large"; break; case WARN: imageLocation = "dialog-warning-large"; break; case ERROR: imageLocation = "dialog-error-large"; break; case STATS: imageLocation = "rating-large"; break; default: imageLocation = "dialog-error-large"; break; } return imageLocation; } public void refresh() { String imageName = getStatusIconName(status); if (showProgress) { progressIndicator.setVisible(true); statusIcon.setVisible(false); } else { progressIndicator.setVisible(false); statusIcon.setVisible(true); statusIcon.setImage(ImageUtils.createIcon(imageName).getImage()); // statusIcon.setImage(new Image(ControlPanelItemController.class.getResource(imageLocation).toString())); if (status == ItemStatus.OK) { statusIcon.setLayoutY(5); statusIcon.setLayoutX(5); statusIcon.setFitHeight(64); statusIcon.setFitWidth(64); } // else if (status == ItemStatus.STATS) // { // statusIcon.setLayoutY(10); // statusIcon.setLayoutX(10); // statusIcon.setFitHeight(64); // statusIcon.setFitWidth(64); // } else { statusIcon.setLayoutY(10); statusIcon.setLayoutX(10); statusIcon.setFitHeight(64); statusIcon.setFitWidth(64); } } } // =============================== // === FXML ====================== // =============================== // =============================== // === Logic ===================== // =============================== // =============================== // === Setters and getters ======= // =============================== public boolean isShowProgress() { return showProgress; } public void setShowProgress(boolean showProgress) { this.showProgress = showProgress; } public void setValues(final ItemStatus status, final String title, final String details) { this.status = status; this.titleText.setText(title); this.detailsText.setText(details); } public void setStatus(final ItemStatus status) { this.status = status; } public void setTitle(final String title) { this.titleText.setText(title); } public void setDetails(final String details) { this.detailsText.setText(details); } public VBox getCustomItems() { return this.itemsBox; } public void setConfigurationMananger(final ConfigurationManager configurationManager) { this.configurationManager = configurationManager; } public FlowPane getDetails() { return details; } }