Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • af3/kernel
  • diewald/kernel
2 results
Show changes
Commits on Source (18)
Showing
with 490 additions and 253 deletions
GraphicUtils.java 9373a2c7a5ebb0d87284d0f6f983348812e5b90d GREEN
JavaFXUtils.java db3cf28289109ffec64c8f96c7b2de779a977b3b GREEN
JavaFXUtils.java 1f7d16c1af5ba938276c09f5ecb89c6add84061e GREEN
......@@ -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;
}
}
......@@ -6,6 +6,7 @@
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry excluding="org/fortiss/tooling/kernel/ui/internal/views/MarkerViewEditorFX/SimpleAnnotationTableFXController.java|org/fortiss/tooling/kernel/ui/internal/views/MarkerViewEditorFX/SimpleAnnotationTableFXViewPart.java" kind="src" path="src"/>
<classpathentry kind="src" path="res"/>
<classpathentry kind="output" path="build"/>
</classpath>
......@@ -30,3 +30,7 @@ Export-Package: org.fortiss.tooling.kernel.ui,
org.fortiss.tooling.kernel.ui.util
Bundle-ClassPath: .
Automatic-Module-Name: org.fortiss.tooling.kernel.ui
Import-Package: org.fortiss.af3.expression.model.definitions,
org.fortiss.af3.project.model.typesystem,
org.fortiss.tooling.base.model.base,
org.fortiss.tooling.base.model.element
......@@ -5,6 +5,7 @@ output.. = build/
bin.includes = .,\
plugin.xml,\
icons/,\
META-INF/
META-INF/,\
src/
src.includes = schema/,\
icons/
......@@ -32,13 +32,6 @@
name="Model Navigator"
restorable="true">
</view>
<view
class="org.fortiss.tooling.kernel.ui.internal.views.MarkerViewPart"
icon="icons/marker_view.gif"
id="org.fortiss.tooling.kernel.model.marker"
name="Model Markers"
restorable="true">
</view>
<view
class="org.fortiss.tooling.kernel.ui.internal.views.ModelElementsViewFX"
icon="icons/library.png"
......@@ -54,13 +47,23 @@
name="Kernel Introspection System Service (KISS)"
restorable="true">
</view>
<view
class="org.fortiss.tooling.kernel.ui.internal.views.library.LibraryViewPart"
icon="icons/library.png"
id="org.fortiss.tooling.kernel.ui.internal.views.library.LibraryViewPart"
name="Library View"
restorable="true">
</view>
<view
class="org.fortiss.tooling.kernel.ui.internal.views.fx.ErrorViewFXViewPart"
icon="icons/marker_view.gif"
id="org.fortiss.tooling.kernel.ui.internal.views.fx.ErrorViewFXViewPart"
name="Marker View FX"
restorable="true">
</view>
<view
class="org.fortiss.tooling.kernel.ui.internal.views.MarkerViewPart"
id="org.fortiss.tooling.kernel.ui.internal.views.MarkerViewPart"
name="Marker View OLD"
restorable="true">
</view>
</extension>
<extension
point="org.eclipse.core.runtime.adapters">
......
<?xml version="1.0" encoding="UTF-8"?>
<?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 fitToHeight="true" fitToWidth="true" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<content>
<VBox>
<children>
<HBox>
<children>
<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" />
</children>
</VBox>
</content>
</ScrollPane>
ESharedImages.java d33fea62344c1654b5da296fb51a18098cb09eed GREEN
ToolingKernelUI.java 250e5dde230272e286aa8d327fd597cf542774fe GREEN
ToolingKernelUIActivator.java fc281e60592e54bd606d0b6667168afdfde8389e GREEN
ToolingKernelUIActivator.java 94420418da064146fbbf40244d5a5b0d277696bf GREEN
......@@ -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,14 @@ public class ToolingKernelUIActivator extends AbstractUIPlugin {
protected void initializeImageRegistry(ImageRegistry registry) {
ESharedImages.registerImages(registry);
}
/** Returns an FX {@link ImageView} for the given icon path. Null otherwise. */
public static ImageView getFXImage(String iconPath) {
try {
ImageView iv = new ImageView(iconPath);
return iv;
} catch(NullPointerException | IllegalArgumentException e) {
return null;
}
}
}
......@@ -2,7 +2,7 @@ ActionService.java e29126b5947c9fd2f1d82bb87001b9d0ead50c3b GREEN
AllocationEditPartFactoryService.java 81bd227736013f1157ba9d0f79a9f3deefe10064 GREEN
ContextMenuService.java ca3c899293f25b70ce8e5f0d86ca2f9683329d81 GREEN
EditPartFactoryService.java e9180c0020f1769d9e24ef3c08f9ca5599dbc5c3 GREEN
MarkerService.java 208f97f3ccabf0947702a17ddca23d8766a268f4 GREEN
MarkerService.java 505296c356f8d66c5c009b6d6181a971d02a9501 GREEN
ModelEditorBindingService.java d980691db4b700714c0669050014d08751354d5e GREEN
ModelElementHandlerService.java eeb07f6926012aa98256d452d1e554a5486dc657 GREEN
NavigatorService.java 1d773dde3791ddf7051616fe249558e7e307757d GREEN
......
......@@ -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;
......@@ -43,9 +44,11 @@ import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
import org.fortiss.tooling.kernel.service.IConstraintCheckerService;
import org.fortiss.tooling.kernel.service.IPersistencyService;
import org.fortiss.tooling.kernel.service.listener.IPersistencyServiceListener;
import org.fortiss.tooling.kernel.ui.internal.views.MarkerViewPart;
import org.fortiss.tooling.kernel.ui.internal.views.fx.ErrorViewFXLayoutController;
import org.fortiss.tooling.kernel.ui.service.IMarkerService;
import javafx.scene.image.ImageView;
/**
* This class implements the {@link IMarkerService} interface.
*
......@@ -77,8 +80,8 @@ public class MarkerService implements IMarkerService, IPersistencyServiceListene
private final UIJob updateUI = new UIJob("Update Model Decorators") {
@Override
public IStatus runInUIThread(IProgressMonitor monitor) {
if(markerView != null) {
markerView.refresh();
if(markerController != null) {
markerController.refresh();
}
return Status.OK_STATUS;
}
......@@ -91,7 +94,7 @@ public class MarkerService implements IMarkerService, IPersistencyServiceListene
private final List<ITopLevelElement> invalidElements = new LinkedList<ITopLevelElement>();
/** Stores the marker view. */
private MarkerViewPart markerView;
private ErrorViewFXLayoutController markerController;
/** Stores the constraint checking job. */
private final Job constraintCheckerJob = new Job("Model Constraint Checker Job") {
......@@ -139,8 +142,8 @@ public class MarkerService implements IMarkerService, IPersistencyServiceListene
}
/** Sets the current marker view. */
public void setMarkerViewPart(MarkerViewPart view) {
this.markerView = view;
public void setMarkerViewPart(ErrorViewFXLayoutController errorViewFXLayoutController) {
this.markerController = errorViewFXLayoutController;
}
/** {@inheritDoc} */
......@@ -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) {
......
/*-------------------------------------------------------------------------+
| Copyright 2011 fortiss GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.ui.internal.views;
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;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.viewers.CellLabelProvider;
import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
import org.fortiss.tooling.kernel.extension.data.IConstraintViolation;
import org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity;
import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
import org.fortiss.tooling.kernel.service.IPersistencyService;
import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler;
import org.fortiss.tooling.kernel.ui.internal.MarkerService;
import org.fortiss.tooling.kernel.ui.service.IMarkerService;
import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
/**
* {@link ViewPart} for the marker display.
*
* @author hoelzl
*/
public class MarkerViewPart extends ViewPart {
/** Stores the toggle state of for each severity level. */
private Map<ESeverity, Boolean> toggleState = new HashMap<ESeverity, Boolean>();
/** GUI builder viewer instance. */
private MarkerViewerGUI gui;
/** Toggle expert severity filter actions. */
private Action[] toggleSeverityFilterAction = new Action[5];
/** Constructor. */
public MarkerViewPart() {
((MarkerService)IMarkerService.getInstance()).setMarkerViewPart(this);
toggleState.put(DEBUG, false);
toggleState.put(INFO, false);
toggleState.put(WARNING, true);
toggleState.put(ERROR, true);
toggleState.put(FATAL, false);
}
/** {@inheritDoc} */
@Override
@SuppressWarnings("unchecked")
public void createPartControl(Composite parent) {
parent.setLayout(new FillLayout());
gui = new MarkerViewerGUI(parent, SWT.NONE);
gui.getTreeViewer().setContentProvider(new MarkerViewContentProvider(this));
gui.getSeverityColumn().setLabelProvider(new CellLabelProvider() {
@Override
public void update(ViewerCell cell) {
if(cell.getElement() instanceof ESeverity) {
final ESeverity severity = (ESeverity)cell.getElement();
cell.setText(severity.toString());
cell.setImage(IMarkerService.getInstance().getSharedImageFor(severity, false));
} else {
cell.setText("");
}
}
});
gui.getElementColumn().setLabelProvider(new CellLabelProvider() {
@Override
public void update(ViewerCell cell) {
if(cell.getElement() instanceof IConstraintViolation) {
IConstraintViolation<? extends EObject> violation =
(IConstraintViolation<? extends EObject>)cell.getElement();
IModelElementHandlerService hs = IModelElementHandlerService.getInstance();
IModelElementHandler<EObject> handler =
hs.getModelElementHandler(violation.getSource());
cell.setText(handler != null ? handler.getName(violation.getSource()) : "");
} else {
cell.setText("");
}
}
});
gui.getExplanationColumn().setLabelProvider(new CellLabelProvider() {
@Override
public void update(ViewerCell cell) {
if(cell.getElement() instanceof IConstraintViolation) {
IConstraintViolation<? extends EObject> violation =
(IConstraintViolation<? extends EObject>)cell.getElement();
cell.setText(violation.getExplanation());
} else {
cell.setText("");
}
}
});
gui.getProjectColumn().setLabelProvider(new CellLabelProvider() {
@Override
public void update(ViewerCell cell) {
if(cell.getElement() instanceof IConstraintViolation) {
IConstraintViolation<? extends EObject> violation =
(IConstraintViolation<? extends EObject>)cell.getElement();
IPersistencyService ps = IPersistencyService.getInstance();
ITopLevelElement topElement = ps.getTopLevelElementFor(violation.getSource());
IModelElementHandler<EObject> handler = null;
EObject rootElement = null;
if(topElement != null) {
rootElement = topElement.getRootModelElement();
IModelElementHandlerService hs = IModelElementHandlerService.getInstance();
handler = hs.getModelElementHandler(rootElement);
}
cell.setText(handler != null ? handler.getName(rootElement) : "");
} else {
cell.setText("");
}
}
});
ColumnViewerToolTipSupport.enableFor(gui.getElementColumn().getViewer());
ColumnViewerToolTipSupport.enableFor(gui.getExplanationColumn().getViewer());
ColumnViewerToolTipSupport.enableFor(gui.getProjectColumn().getViewer());
gui.getTreeViewer().addDoubleClickListener(new DoubleClick(true) {
/** {@inheritDoc} */
@Override
protected EObject getDoubleClickedElement(IStructuredSelection selection) {
if(selection.getFirstElement() instanceof IConstraintViolation) {
return ((IConstraintViolation<EObject>)selection.getFirstElement())
.getContainer();
}
return super.getDoubleClickedElement(selection);
}
});
gui.getTreeViewer().setInput(IMarkerService.getInstance());
createToggleActions();
}
/** {@inheritDoc} */
@Override
public void setFocus() {
gui.getTreeViewer().getControl().setFocus();
}
/** Refreshes the view. Needs to be called on UI thread. */
public void refresh() {
if(!gui.getTreeViewer().getControl().isDisposed()) {
gui.getTreeViewer().refresh();
}
}
/** Returns toggleState. */
/* package */Boolean getToggleState(ESeverity sev) {
return toggleState.get(sev);
}
/** Creates the toggle actions. */
private void createToggleActions() {
toggleSeverityFilterAction[0] =
new SeverityFilterAction("D", "Toggle DEBUG Messages", DEBUG);
toggleSeverityFilterAction[1] = new SeverityFilterAction("I", "Toggle INFO Messages", INFO);
toggleSeverityFilterAction[2] =
new SeverityFilterAction("W", "Toggle WARNING Messages", WARNING);
toggleSeverityFilterAction[3] =
new SeverityFilterAction("E", "Toggle ERROR Messages", ERROR);
toggleSeverityFilterAction[4] =
new SeverityFilterAction("F", "Toggle FATAL Messages", FATAL);
IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
Separator additionsSeperator = new Separator("additions");
additionsSeperator.setVisible(true);
toolBarManager.add(additionsSeperator);
for(int i = 0; i < toggleSeverityFilterAction.length; i++) {
toolBarManager.insertAfter("additions", toggleSeverityFilterAction[i]);
}
}
/** Action for severity filter toggle. */
private class SeverityFilterAction extends Action {
/** Stores the severity level this action toggles. */
private final ESeverity severity;
/** Constructor. */
public SeverityFilterAction(String name, String tooltip, ESeverity severity) {
super(name, SWT.TOGGLE);
this.severity = severity;
setToolTipText(tooltip);
setChecked(toggleState.get(severity));
setImageDescriptor(IMarkerService.getInstance().getImageFor(severity, false));
}
/** {@inheritDoc} */
@Override
public void run() {
// invert state
toggleState.put(severity, !toggleState.get(severity));
refresh();
}
}
}
ErrorViewFXLayoutController.java 382b8014acf4b0c625817d6279dfcdd670296cb2 GREEN
ErrorViewFXViewPart.java f620022aef647d7a019be8afc5351fabde05dcee GREEN
MarkerViewFXContentProvider.java ecf92449414b2b8648ad151bc932189baa23dc12 GREEN
MarkerViewFXUIProvider.java c5719d95ac7bd5605fff65d6150eca8b9ca6fc02 GREEN
/*-------------------------------------------------------------------------+
| Copyright 2020 fortiss GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.ui.internal.views.fx;
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;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeContentProviderBase;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeTableUIProviderBase;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeTableViewer;
import org.fortiss.tooling.common.ui.javafx.layout.CompositeFXControllerBase;
import org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity;
import org.fortiss.tooling.kernel.ui.internal.MarkerService;
import org.fortiss.tooling.kernel.ui.service.IMarkerService;
import javafx.fxml.FXML;
import javafx.scene.Node;
import javafx.scene.control.ToggleButton;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
/**
* Controller class for the "marker view". References the FXML layout and contains all control
* logic.
*
* @author abid
*/
public class ErrorViewFXLayoutController extends CompositeFXControllerBase<Node, Node> {
/** Debug Button */
@FXML
private ToggleButton debugBtn;
/** Info Button */
@FXML
private ToggleButton infoBtn;
/** Warning Button */
@FXML
private ToggleButton warningBtn;
/** Error Button */
@FXML
private ToggleButton errorBtn;
/** Fatal Button */
@FXML
private ToggleButton fatalBtn;
/** Border Pane for the tree table */
@FXML
private BorderPane pane;
/** Toggle State */
private Map<ESeverity, Boolean> toggleState = new HashMap<ESeverity, Boolean>();
/** Tree table */
private DynamicTreeTableViewer<Object> treeTable;
/** Constructor. */
@SuppressWarnings("unchecked")
public ErrorViewFXLayoutController(Map<ESeverity, Boolean> toggleState) {
this.toggleState = toggleState;
((MarkerService)IMarkerService.getInstance()).setMarkerViewPart(this);
}
/** Called when debug checkbox is pushed. */
public void onDebugBtn() {
toggleState.put(DEBUG, debugBtn.isSelected());
refresh();
}
/** Called when info check-box is pushed. */
public void onInfoBtn() {
toggleState.put(INFO, infoBtn.isSelected());
refresh();
}
/** Called when warning check-box is pushed. */
public void onWarningBtn() {
toggleState.put(WARNING, warningBtn.isSelected());
refresh();
}
/** Called when error check-box is pushed. */
public void onErrorBtn() {
toggleState.put(ERROR, errorBtn.isSelected());
refresh();
}
/** Called when fatal check-box is pushed. */
public void onFatalBtn() {
toggleState.put(FATAL, fatalBtn.isSelected());
refresh();
}
/** {@inheritDoc} */
@Override
public String getFXMLLocation() {
return "ErrorViewFXLayout.fxml";
}
/** Refreshes the tree table. */
public void refresh() {
treeTable.update();
}
/** {@inheritDoc} */
@Override
public void initialize() {
DynamicTreeContentProviderBase<Object> contentProvider = new MarkerViewFXContentProvider();
DynamicTreeTableUIProviderBase<Object> uiProvider = new MarkerViewFXUIProvider();
treeTable = new DynamicTreeTableViewer<Object>(toggleState, false, 2, contentProvider,
uiProvider);
treeTable.addColumn("Severity", 80);
treeTable.addColumn("Element", 80);
treeTable.addColumn("Explanation", 80);
treeTable.addColumn("Project", 80);
// set up icons
ImageView debugImg = IMarkerService.getInstance().getFXImageFor(DEBUG, false);
debugBtn.setGraphic(debugImg);
debugBtn.setText("");
debugBtn.setTooltip(createToolTip(DEBUG.name()));
toggleState.put(DEBUG, false);
ImageView errorImg = IMarkerService.getInstance().getFXImageFor(ERROR, false);
errorBtn.setGraphic(errorImg);
errorBtn.setText("");
errorBtn.setTooltip(createToolTip(ERROR.name()));
toggleState.put(ERROR, true);
errorBtn.setSelected(true);
ImageView fatalImg = IMarkerService.getInstance().getFXImageFor(FATAL, false);
fatalBtn.setGraphic(fatalImg);
fatalBtn.setText("");
fatalBtn.setTooltip(createToolTip(FATAL.name()));
toggleState.put(FATAL, false);
ImageView infoImg = IMarkerService.getInstance().getFXImageFor(INFO, false);
infoBtn.setGraphic(infoImg);
infoBtn.setText("");
infoBtn.setTooltip(createToolTip(INFO.name()));
toggleState.put(INFO, false);
ImageView warnImg = IMarkerService.getInstance().getFXImageFor(WARNING, false);
warningBtn.setGraphic(warnImg);
warningBtn.setText("");
warningBtn.setTooltip(createToolTip(WARNING.name()));
toggleState.put(WARNING, true);
warningBtn.setSelected(true);
pane.setCenter(treeTable.getControl());
refresh();
}
}
/*-------------------------------------------------------------------------+
| Copyright 2011 fortiss GmbH |
| Copyright 2020 fortiss GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
......@@ -13,87 +13,39 @@
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.ui.internal.views;
package org.fortiss.tooling.kernel.ui.internal.views.fx;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.TreeViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
import java.util.HashMap;
import java.util.Map;
/**
* GENERATED CODE (WindowBuilder)
import org.fortiss.tooling.common.ui.javafx.AF3FXViewPart;
import org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity;
/**
* JavaFX view part of the Marker View.
*
* Wrapper for the {@link ErrorViewFXViewPart}. This class can be referenced in the
* {@code plugin.xml} file to register the view.
*
* @author hoelzlf
* @author abid
*/
@SuppressWarnings("javadoc")
public class MarkerViewerGUI extends Composite {
private TreeViewer treeViewer;
private TreeViewerColumn treeViewerColumn;
private TreeViewerColumn treeViewerColumn_1;
private TreeViewerColumn treeViewerColumn_2;
private TreeViewerColumn treeViewerColumn_3;
/**
* Create the composite.
*
* @param parent
* @param style
*/
public MarkerViewerGUI(Composite parent, int style) {
super(parent, style);
setLayout(new FillLayout(SWT.HORIZONTAL));
treeViewer = new TreeViewer(this, SWT.BORDER);
Tree tree = treeViewer.getTree();
tree.setLinesVisible(true);
tree.setHeaderVisible(true);
treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE);
TreeColumn trclmnSeverity = treeViewerColumn.getColumn();
trclmnSeverity.setWidth(100);
trclmnSeverity.setText("Severity");
public class ErrorViewFXViewPart extends AF3FXViewPart {
treeViewerColumn_1 = new TreeViewerColumn(treeViewer, SWT.NONE);
TreeColumn trclmnElement = treeViewerColumn_1.getColumn();
trclmnElement.setWidth(100);
trclmnElement.setText("Element");
/** The classes ID. */
public static final String ID = ErrorViewFXViewPart.class.getName();
treeViewerColumn_3 = new TreeViewerColumn(treeViewer, SWT.NONE);
TreeColumn trclmnExplanation = treeViewerColumn_3.getColumn();
trclmnExplanation.setWidth(302);
trclmnExplanation.setText("Explanation");
/** Stores the toggle state of for each severity level. */
private static Map<ESeverity, Boolean> toggleState = new HashMap<ESeverity, Boolean>();
treeViewerColumn_2 = new TreeViewerColumn(treeViewer, SWT.NONE);
TreeColumn trclmnProject = treeViewerColumn_2.getColumn();
trclmnProject.setWidth(100);
trclmnProject.setText("Project");
}
@Override
protected void checkSubclass() {
// Disable the check that prevents subclassing of SWT components
}
public TreeViewer getTreeViewer() {
return treeViewer;
}
public TreeViewerColumn getSeverityColumn() {
return treeViewerColumn;
}
public TreeViewerColumn getElementColumn() {
return treeViewerColumn_1;
}
/** Constructor. */
public TreeViewerColumn getProjectColumn() {
return treeViewerColumn_2;
public ErrorViewFXViewPart() throws Exception {
super(new ErrorViewFXLayoutController(toggleState), null);
}
public TreeViewerColumn getExplanationColumn() {
return treeViewerColumn_3;
/** Returns toggleState. */
/* package */Boolean getToggleState(ESeverity sev) {
return toggleState.get(sev);
}
}
/*-------------------------------------------------------------------------+
| Copyright 2013 fortiss GmbH |
| Copyright 2020 fortiss GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
......@@ -13,77 +13,41 @@
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.ui.internal.views;
package org.fortiss.tooling.kernel.ui.internal.views.fx;
import java.util.ArrayList;
import java.util.List;
import java.util.Collection;
import java.util.Map;
import java.util.Map.Entry;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeContentProviderBase;
import org.fortiss.tooling.kernel.extension.data.IConstraintViolation;
import org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity;
import org.fortiss.tooling.kernel.ui.service.IMarkerService;
/**
* Content provider for the {@link MarkerViewPart}.
* Content provider for the error marker view.
*
* @author hoelzl
* @author abid
*/
public class MarkerViewContentProvider implements ITreeContentProvider {
/** The marker view of this provider. */
private final MarkerViewPart markerView;
/** Constructor. */
public MarkerViewContentProvider(MarkerViewPart markerViewPart) {
this.markerView = markerViewPart;
}
public class MarkerViewFXContentProvider extends DynamicTreeContentProviderBase<Object> {
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// ignore
}
/** {@inheritDoc} */
@Override
public void dispose() {
// do nothing
}
/** {@inheritDoc} */
@Override
public boolean hasChildren(Object element) {
Object[] objs = getChildren(element);
return objs != null && objs.length > 0;
}
/** {@inheritDoc} */
@Override
public Object getParent(Object element) {
if(element instanceof IConstraintViolation<?>) {
return ((IConstraintViolation<?>)element).getSeverity();
}
return null;
}
/** {@inheritDoc} */
@Override
public Object[] getElements(Object inputElement) {
List<ESeverity> result = new ArrayList<ESeverity>();
for(ESeverity sev : ESeverity.values()) {
if(sev != ESeverity.lowest() && markerView.getToggleState(sev)) {
result.add(sev);
public Collection<? extends Object> getChildren(Object parent) {
Map<ESeverity, Boolean> servList;
Collection<IConstraintViolation<?>> violation_list =
new ArrayList<IConstraintViolation<?>>();
if(parent instanceof Map<?, ?>) {
servList = (Map<ESeverity, Boolean>)parent;
for(Entry<ESeverity, Boolean> e : servList.entrySet()) {
if(e.getValue()) {
violation_list.addAll(
IMarkerService.getInstance().getAllViolationsWithSeverity(e.getKey()));
}
}
}
return result.toArray();
}
/** {@inheritDoc} */
@Override
public Object[] getChildren(Object parentElement) {
if(parentElement instanceof ESeverity) {
return IMarkerService.getInstance()
.getAllViolationsWithSeverity((ESeverity)parentElement).toArray();
return violation_list;
}
return null;
}
......
/*-------------------------------------------------------------------------+
| Copyright 2020 fortiss GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.ui.internal.views.fx;
import org.eclipse.emf.ecore.EObject;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeTableUIProviderBase;
import org.fortiss.tooling.kernel.extension.data.IConstraintViolation;
import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
import org.fortiss.tooling.kernel.model.INamedCommentedElement;
import org.fortiss.tooling.kernel.service.ICommandStackService;
import org.fortiss.tooling.kernel.service.IPersistencyService;
import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler;
import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
import javafx.scene.control.ContextMenu;
/**
* UI (label) provider for the marker view.
*
* @author abid
*/
public class MarkerViewFXUIProvider extends DynamicTreeTableUIProviderBase<Object> {
/** {@inheritDoc} */
@Override
/** {@inheritDoc} */
public void updateValue(Object element, int column, Object value) {
if(column == 0 && element instanceof INamedCommentedElement) {
INamedCommentedElement elem = (INamedCommentedElement)element;
ICommandStackService.getInstance().runAsCommand(elem, () -> {
elem.setComment((String)value);
});
}
}
/** {@inheritDoc} */
@Override
public ContextMenu createContextMenu(Object element, int col) {
if(element == null || col != 0) {
return null;
}
ContextMenu menu = new ContextMenu();
return menu;
}
/** {@inheritDoc} */
@Override
public String getLabel(Object element, int col) {
IConstraintViolation<?> violation = (IConstraintViolation<?>)element;
if(element instanceof IConstraintViolation) {
switch(col) {
case 0: // Severity Column
return violation.getSeverity().toString();
case 1: // Element Column
IModelElementHandlerService hs = IModelElementHandlerService.getInstance();
IModelElementHandler<EObject> handler =
hs.getModelElementHandler(violation.getSource());
if(handler != null) {
return handler.getName(violation.getSource());
}
case 2: // Explanation Column
return violation.getExplanation();
case 3: // Project Column
IPersistencyService ps = IPersistencyService.getInstance();
ITopLevelElement topElement = ps.getTopLevelElementFor(violation.getSource());
IModelElementHandler<EObject> handler_prj = null;
EObject rootElement = null;
if(topElement != null) {
rootElement = topElement.getRootModelElement();
IModelElementHandlerService hs_prj =
IModelElementHandlerService.getInstance();
handler_prj = hs_prj.getModelElementHandler(rootElement);
}
return(handler_prj != null ? handler_prj.getName(rootElement) : "");
}
}
return "";
}
}
......@@ -2,7 +2,7 @@ IActionService.java 22eafafc8708cbff7f855f7b1b9bef042c127f25 GREEN
IAllocationEditPartFactoryService.java ac7243a8ff8a6c3f71937ecf3e63a04e271ca1d5 GREEN
IContextMenuService.java cfb6b8237b6cd2b0e461991a9ceb95969f330265 GREEN
IEditPartFactoryService.java c448bff63fb81f57037c9f1dc5319859c12d0c4d GREEN
IMarkerService.java d433e838e387dd2fe61b8dea7395ebb7203ae39b GREEN
IMarkerService.java c52acc1f68e909954554b3e9e2f2e232efb052cd GREEN
IModelEditorBindingService.java ce2ae1957e2232bb0fac1d1d262103f9adfc5266 GREEN
IModelElementHandlerService.java 748ffd22d6836a5599f8785f023469eb58c80ece GREEN
INavigatorService.java 8fc66f7e554cfb547f2ce65dec9f48ac0559c54e GREEN
......
......@@ -25,6 +25,9 @@ import org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity;
import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
import org.fortiss.tooling.kernel.service.IConstraintCheckerService;
import org.fortiss.tooling.kernel.ui.internal.MarkerService;
import org.fortiss.tooling.kernel.ui.internal.views.fx.ErrorViewFXViewPart;
import javafx.scene.image.ImageView;
/**
* The marker service manages model element specific markers. It uses the
......@@ -36,7 +39,7 @@ import org.fortiss.tooling.kernel.ui.internal.MarkerService;
public interface IMarkerService {
/** Returns view id of the marker view. */
public static final String MARKER_VIEW = "org.fortiss.tooling.kernel.model.marker";
public static final String MARKER_VIEW = ErrorViewFXViewPart.ID;
/** Returns the service instance. */
public static IMarkerService getInstance() {
......@@ -68,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.
......