From 57b5ce56a7ec65e2f10ee8b57b1dee163195b14f Mon Sep 17 00:00:00 2001 From: Johannes Eder <eder@fortiss.org> Date: Tue, 11 Aug 2020 15:54:13 +0200 Subject: [PATCH] <Sub-system>: <Summary> * changed to toogle buttons * created new fx image method * created standard tool tip util method Issue-Ref: 4018 Issue-Url: https://af3-developer.fortiss.org/issues/4018 Signed-off-by: Johannes Eder <eder@fortiss.org> --- .../common/ui/javafx/util/JavaFXUtils.java | 11 ++++ .../kernel/ui/ToolingKernelUIActivator.java | 11 ++++ .../kernel/ui/internal/MarkerService.java | 27 ++++++++++ .../views/ErrorViewFX/ErrorViewFXLayout.fxml | 17 +++--- .../ErrorViewFXLayoutController.java | 54 ++++++++++++++++--- .../kernel/ui/service/IMarkerService.java | 5 ++ 6 files changed, 109 insertions(+), 16 deletions(-) diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/util/JavaFXUtils.java b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/util/JavaFXUtils.java index db3cf2828..1f7d16c1a 100644 --- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/util/JavaFXUtils.java +++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/util/JavaFXUtils.java @@ -26,6 +26,7 @@ import javafx.fxml.FXMLLoader; import javafx.scene.Node; import javafx.scene.Parent; import javafx.scene.Scene; +import javafx.scene.control.Tooltip; /** * Utility methods for {@link Scene} graph. @@ -197,4 +198,14 @@ public final class JavaFXUtils { } return null; } + + /** + * Creates a tooltip with the given text, yellow background and black font. The standard tooltip + * is white font on yellow background which is hardly readable. + */ + public static Tooltip createToolTip(String description) { + Tooltip value = new Tooltip(description); + value.setStyle("-fx-background-color: yellow; -fx-text-fill: black;"); + return value; + } } diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/ToolingKernelUIActivator.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/ToolingKernelUIActivator.java index fc281e605..b6a0f60de 100644 --- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/ToolingKernelUIActivator.java +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/ToolingKernelUIActivator.java @@ -31,6 +31,8 @@ import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService; import org.fortiss.tooling.kernel.ui.service.INavigatorService; import org.osgi.framework.BundleContext; +import javafx.scene.image.ImageView; + /** * The activator class controls the plug-in life cycle. * @@ -91,4 +93,13 @@ public class ToolingKernelUIActivator extends AbstractUIPlugin { protected void initializeImageRegistry(ImageRegistry registry) { ESharedImages.registerImages(registry); } + + public static ImageView getFXImage(String iconPath) { + try { + ImageView iv = new ImageView(iconPath); + return iv; + } catch(NullPointerException | IllegalArgumentException e) { + return null; + } + } } diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/MarkerService.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/MarkerService.java index 098a2f628..7f076182b 100644 --- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/MarkerService.java +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/MarkerService.java @@ -17,6 +17,7 @@ package org.fortiss.tooling.kernel.ui.internal; import static java.util.Collections.emptyList; import static java.util.Collections.sort; +import static org.fortiss.tooling.kernel.ui.ToolingKernelUIActivator.getFXImage; import static org.fortiss.tooling.kernel.ui.ToolingKernelUIActivator.getImageDescriptor; import static org.fortiss.tooling.kernel.utils.EcoreUtils.postRefreshNotification; @@ -46,6 +47,8 @@ import org.fortiss.tooling.kernel.service.listener.IPersistencyServiceListener; import org.fortiss.tooling.kernel.ui.internal.views.ErrorViewFX.ErrorViewFXLayoutController; import org.fortiss.tooling.kernel.ui.service.IMarkerService; +import javafx.scene.image.ImageView; + /** * This class implements the {@link IMarkerService} interface. * @@ -388,6 +391,30 @@ public class MarkerService implements IMarkerService, IPersistencyServiceListene return list; } + /** {@inheritDoc} */ + @Override + public ImageView getFXImageFor(ESeverity severity, boolean smallDecoration) { + switch(severity) { + case FATAL: + return getFXImage("icons/fatal.gif"); + case ERROR: + if(smallDecoration) { + return getFXImage("icons/error_small.gif"); + } + return getFXImage("icons/error.gif"); + case WARNING: + if(smallDecoration) { + return getFXImage("icons/warning_small.gif"); + } + return getFXImage("icons/warning.gif"); + case INFO: + return getFXImage("icons/info.gif"); + case DEBUG: + return getFXImage("icons/debug.gif"); + } + return null; + } + /** {@inheritDoc} */ @Override public ImageDescriptor getImageFor(ESeverity severity, boolean smallDecoration) { diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/ErrorViewFX/ErrorViewFXLayout.fxml b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/ErrorViewFX/ErrorViewFXLayout.fxml index 047e45b0c..362cfe0ea 100644 --- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/ErrorViewFX/ErrorViewFXLayout.fxml +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/ErrorViewFX/ErrorViewFXLayout.fxml @@ -1,26 +1,25 @@ <?xml version="1.0" encoding="UTF-8"?> -<?import javafx.scene.control.CheckBox?> <?import javafx.scene.control.ScrollPane?> +<?import javafx.scene.control.ToggleButton?> <?import javafx.scene.layout.BorderPane?> <?import javafx.scene.layout.HBox?> <?import javafx.scene.layout.VBox?> - -<ScrollPane xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1"> +<ScrollPane fitToHeight="true" fitToWidth="true" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1"> <content> <VBox> <children> <HBox> <children> - <CheckBox fx:id="errorBtn" mnemonicParsing="false" onAction="#onErrorBtn" text="Error" /> - <CheckBox fx:id="infoBtn" mnemonicParsing="false" onAction="#onInfoBtn" text="Info" /> - <CheckBox fx:id="debugBtn" mnemonicParsing="false" onAction="#onDebugBtn" text="Debug" /> - <CheckBox fx:id="warningBtn" mnemonicParsing="false" onAction="#onWarningBtn" text="Warning" /> - <CheckBox fx:id="fatalBtn" mnemonicParsing="false" onAction="#onFatalBtn" prefHeight="18.0" prefWidth="93.0" text="Fatal" /> + <ToggleButton fx:id="errorBtn" mnemonicParsing="false" onAction="#onErrorBtn" text="Error" /> + <ToggleButton fx:id="infoBtn" mnemonicParsing="false" onAction="#onInfoBtn" text="Info" /> + <ToggleButton fx:id="debugBtn" mnemonicParsing="false" onAction="#onDebugBtn" text="Debug" /> + <ToggleButton fx:id="warningBtn" mnemonicParsing="false" onAction="#onWarningBtn" text="Warning" /> + <ToggleButton fx:id="fatalBtn" mnemonicParsing="false" onAction="#onFatalBtn" text="Fatal" /> </children> </HBox> - <BorderPane fx:id="pane" prefHeight="200.0" prefWidth="200.0" /> + <BorderPane fx:id="pane" /> </children> </VBox> </content> diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/ErrorViewFX/ErrorViewFXLayoutController.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/ErrorViewFX/ErrorViewFXLayoutController.java index 9a0fd322a..ebe565fa5 100644 --- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/ErrorViewFX/ErrorViewFXLayoutController.java +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/ErrorViewFX/ErrorViewFXLayoutController.java @@ -15,6 +15,13 @@ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.kernel.ui.internal.views.ErrorViewFX; +import static org.fortiss.tooling.common.ui.javafx.util.JavaFXUtils.createToolTip; +import static org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity.DEBUG; +import static org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity.ERROR; +import static org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity.FATAL; +import static org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity.INFO; +import static org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity.WARNING; + import java.util.HashMap; import java.util.Map; @@ -28,7 +35,8 @@ import org.fortiss.tooling.kernel.ui.service.IMarkerService; import javafx.fxml.FXML; import javafx.scene.Node; -import javafx.scene.control.CheckBox; +import javafx.scene.control.ToggleButton; +import javafx.scene.image.ImageView; import javafx.scene.layout.BorderPane; /** @@ -42,19 +50,19 @@ public class ErrorViewFXLayoutController extends CompositeFXControllerBase<Node, /** Debug Button */ @FXML - private CheckBox debugBtn; + private ToggleButton debugBtn; /** Info Button */ @FXML - private CheckBox infoBtn; + private ToggleButton infoBtn; /** Warning Button */ @FXML - private CheckBox warningBtn; + private ToggleButton warningBtn; /** Error Button */ @FXML - private CheckBox errorBtn; + private ToggleButton errorBtn; /** Fatal Button */ @FXML - private CheckBox fatalBtn; + private ToggleButton fatalBtn; /** Border Pane for the tree table */ @FXML private BorderPane pane; @@ -144,7 +152,39 @@ public class ErrorViewFXLayoutController extends CompositeFXControllerBase<Node, treeTable.addColumn("Explanation", 80); treeTable.addColumn("Project", 80); + // set up icons + ImageView debugImg = IMarkerService.getInstance().getFXImageFor(ESeverity.DEBUG, false); + debugBtn.setGraphic(debugImg); + debugBtn.setText(""); + debugBtn.setTooltip(createToolTip(DEBUG.name())); + toggleState.put(DEBUG, false); + + ImageView errorImg = IMarkerService.getInstance().getFXImageFor(ESeverity.ERROR, false); + errorBtn.setGraphic(errorImg); + errorBtn.setText(""); + errorBtn.setTooltip(createToolTip(ERROR.name())); + toggleState.put(ERROR, true); + errorBtn.setSelected(true); + + ImageView fatalImg = IMarkerService.getInstance().getFXImageFor(ESeverity.FATAL, false); + fatalBtn.setGraphic(fatalImg); + fatalBtn.setText(""); + fatalBtn.setTooltip(createToolTip(FATAL.name())); + toggleState.put(FATAL, false); + + ImageView infoImg = IMarkerService.getInstance().getFXImageFor(ESeverity.INFO, false); + infoBtn.setGraphic(infoImg); + infoBtn.setText(""); + infoBtn.setTooltip(createToolTip(INFO.name())); + toggleState.put(INFO, false); + + ImageView warnImg = IMarkerService.getInstance().getFXImageFor(ESeverity.WARNING, false); + warningBtn.setGraphic(warnImg); + warningBtn.setText(""); + warningBtn.setTooltip(createToolTip(WARNING.name())); + toggleState.put(WARNING, true); + warningBtn.setSelected(true); + pane.setCenter(treeTable.getControl()); - pane.layout(); } } diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/service/IMarkerService.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/service/IMarkerService.java index f54211901..fcd0b8d12 100644 --- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/service/IMarkerService.java +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/service/IMarkerService.java @@ -27,6 +27,8 @@ import org.fortiss.tooling.kernel.service.IConstraintCheckerService; import org.fortiss.tooling.kernel.ui.internal.MarkerService; import org.fortiss.tooling.kernel.ui.internal.views.ErrorViewFX.ErrorViewFXViewPart; +import javafx.scene.image.ImageView; + /** * The marker service manages model element specific markers. It uses the * {@link IConstraintCheckerService} to check constraints on the model and @@ -69,6 +71,9 @@ public interface IMarkerService { */ ImageDescriptor getImageFor(ESeverity severity, boolean smallDecoration); + /** Similar to {@link #getImageFor(ESeverity, boolean)} but for Java FX. */ + ImageView getFXImageFor(ESeverity severity, boolean smallDecoration); + /** * <p> * Returns a shared icon appropriate for the severity. Flag indicates small sized image. -- GitLab