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
Showing
with 832 additions and 189 deletions
......@@ -13,54 +13,48 @@
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.ui.internal.introspection.details.handler;
package org.fortiss.tooling.kernel.ui.introspection.details.handler;
import static java.util.Arrays.asList;
import java.util.Collection;
import org.conqat.ide.commons.ui.jface.TreeContentProviderBase;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.TableLabelProviderBase;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.ui.dialogs.PatternFilter;
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.kernel.extension.IEclipseResourcePostLoadProvider;
import org.fortiss.tooling.kernel.extension.IEclipseResourceStorageLocationProvider;
import org.fortiss.tooling.kernel.extension.data.ModelStorageError;
import org.fortiss.tooling.kernel.introspection.items.EclipseResourceStorageServiceIntrospectionDetailsItem;
import org.fortiss.tooling.kernel.introspection.items.EclipseResourceStorageKISSDetailsItem;
import javafx.scene.Node;
import javafx.scene.control.ContextMenu;
/**
* Introspection UI handler for the {@link EclipseResourceStorageServiceIntrospectionDetailsItem}s.
* Introspection UI handler for the {@link EclipseResourceStorageKISSDetailsItem}s.
*
* @author hoelzl
*/
public final class EclipseResourceStorageProviderIntrospectionDetailsUIHandler
extends IntrospectionDetailsUIHandlerBase {
public final class EclipseResourceStorageKISSDetailsUIHandler
extends KISSDetailsUIHandlerBase {
/** {@inheritDoc} */
@Override
public Control createComposite(ScrolledComposite parent) {
public Node createDisplayControl() {
String heading = "Type to search registered Eclipse resource providers:";
String footer = "Number of currently registered storage providers: " +
getInputObject().getStorageProviderList().size() + " (providing " +
getInputObject().getLoadedFiles().size() + " file[s], " +
getInputObject().getErrorFiles().size() + " erroneous).";
return createFilteredTreeInTabFolder(parent, heading, footer, "Registered Providers");
getRootObject().getStorageProviderList().size() + " (providing " +
getRootObject().getLoadedFiles().size() + " file[s], " +
getRootObject().getErrorFiles().size() + " erroneous).";
return createFilteredTree(heading, footer);
}
/** {@inheritDoc} */
@Override
protected void createTreeColumns(Tree tree) {
TreeColumn col0 = new TreeColumn(tree, SWT.LEFT);
col0.setText("Category / Provider / File");
col0.setWidth(450);
TreeColumn col1 = new TreeColumn(tree, SWT.LEFT);
col1.setText("Implementation Class / Path / Storage Error Message");
col1.setWidth(400);
protected void createTreeColumns(DynamicTreeTableViewer<Object> tree) {
tree.addColumn("Category / Provider / File", 450);
tree.addColumn("Implementation Class / Path / Storage Error Message", 400);
}
/** String array of root categories. */
......@@ -69,22 +63,22 @@ public final class EclipseResourceStorageProviderIntrospectionDetailsUIHandler
/** {@inheritDoc} */
@Override
protected ITreeContentProvider createContentProvider() {
return new TreeContentProviderBase() {
protected DynamicTreeContentProviderBase<Object> createContentProvider() {
return new DynamicTreeContentProviderBase<Object>() {
@Override
public Object[] getChildren(Object parentElement) {
if(parentElement == getInputObject()) {
return ROOT_CATEGORY;
public Collection<? extends Object> getChildren(Object parentElement) {
if(parentElement == getRootObject()) {
return asList(ROOT_CATEGORY);
}
if(ROOT_CATEGORY[0].equals(parentElement)) {
return getInputObject().getStorageProviderList().toArray();
return getRootObject().getStorageProviderList();
}
if(ROOT_CATEGORY[1].equals(parentElement)) {
return getInputObject().getLoadedFiles().toArray();
return getRootObject().getLoadedFiles();
}
if(ROOT_CATEGORY[2].equals(parentElement)) {
return getInputObject().getErrorFiles().toArray();
return getRootObject().getErrorFiles();
}
return null;
}
......@@ -93,10 +87,10 @@ public final class EclipseResourceStorageProviderIntrospectionDetailsUIHandler
/** {@inheritDoc} */
@Override
protected ITableLabelProvider createLabelProvider() {
return new TableLabelProviderBase() {
protected DynamicTreeTableUIProviderBase<Object> createUIProvider() {
return new DynamicTreeTableUIProviderBase<Object>() {
@Override
public String getColumnText(Object parentElement, int columnIndex) {
public String getLabel(Object parentElement, int columnIndex) {
if(parentElement instanceof IEclipseResourceStorageLocationProvider ||
parentElement instanceof IEclipseResourcePostLoadProvider) {
return columnIndex == 0 ? parentElement.getClass().getSimpleName()
......@@ -115,31 +109,18 @@ public final class EclipseResourceStorageProviderIntrospectionDetailsUIHandler
}
return "";
}
};
}
/** {@inheritDoc} */
@Override
protected PatternFilter createPatternFilter() {
return new TableViewerPatternFilter();
}
/** {@inheritDoc} */
@Override
protected EclipseResourceStorageServiceIntrospectionDetailsItem getInputObject() {
return (EclipseResourceStorageServiceIntrospectionDetailsItem)dataItem;
}
/** {@inheritDoc} */
@Override
protected boolean testSelection(Object selection) {
return selection instanceof IEclipseResourceStorageLocationProvider ||
selection instanceof IEclipseResourcePostLoadProvider;
/** {@inheritDoc} */
@Override
public ContextMenu createContextMenu(Object element, int column) {
return createCopyClassNameMenuItem(element.getClass());
}
};
}
/** {@inheritDoc} */
@Override
protected void populateContextMenu(Object selection, MenuManager mgr) {
mgr.add(createCopyClassNameAction(selection.getClass()));
protected EclipseResourceStorageKISSDetailsItem getRootObject() {
return (EclipseResourceStorageKISSDetailsItem)dataItem;
}
}
......@@ -13,55 +13,55 @@
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.ui.internal.introspection.details.handler;
package org.fortiss.tooling.kernel.ui.introspection.details.handler;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Tree;
import org.fortiss.tooling.kernel.introspection.items.EObjectAwareIntrospectionDetailsItemBase;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeContentProviderBase;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeTableViewer;
import org.fortiss.tooling.kernel.introspection.items.EObjectAwareKISSDetailsItemBase;
import org.fortiss.tooling.kernel.ui.internal.EditPartFactoryService;
import org.fortiss.tooling.kernel.ui.internal.introspection.details.DetailsUIHandlerBase;
import org.fortiss.tooling.kernel.ui.internal.introspection.items.EditPartFactoryServiceIntrospectionDetailsItem;
import org.fortiss.tooling.kernel.ui.introspection.details.DetailsUIHandlerBase;
import org.fortiss.tooling.kernel.ui.introspection.items.EditPartFactoryKISSDetailsItem;
import javafx.scene.Node;
/**
* {@link DetailsUIHandlerBase} for {@link EditPartFactoryService}.
*
* @author hoelzl
*/
public class EditPartFactoryServiceIntrospectionDetailsUIHandler
extends EObjectAwareIntrospectionDetailsUIHandlerBase {
public class EditPartFactoryKISSDetailsUIHandler
extends EObjectAwareKISSDetailsUIHandlerBase {
/** {@inheritDoc} */
@Override
public Control createComposite(ScrolledComposite parent) {
public Node createDisplayControl() {
String heading = "Type to search registered editpart factories:";
String footer = "Number of currently registered editpart factories: " +
getInputObject().countHandlers();
return createFilteredTreeInTabFolder(parent, heading, footer, "Registered Factories");
getRootObject().countHandlers();
return createFilteredTree(heading, footer);
}
/** {@inheritDoc} */
@Override
protected void createTreeColumns(Tree tree) {
protected void createTreeColumns(DynamicTreeTableViewer<Object> tree) {
createDefaultTreeColumns(tree, "Class / Factory", 250, "Factory Class", 400,
"EObject Class", 400);
}
/** {@inheritDoc} */
@Override
protected ITreeContentProvider createContentProvider() {
protected DynamicTreeContentProviderBase<Object> createContentProvider() {
return new EObjectAwareTreeContentProviderBase() {
@Override
protected EObjectAwareIntrospectionDetailsItemBase<?> getInputObject() {
return EditPartFactoryServiceIntrospectionDetailsUIHandler.this.getInputObject();
protected EObjectAwareKISSDetailsItemBase<?> getInputObject() {
return EditPartFactoryKISSDetailsUIHandler.this.getRootObject();
}
};
}
/** {@inheritDoc} */
@Override
protected EditPartFactoryServiceIntrospectionDetailsItem getInputObject() {
return (EditPartFactoryServiceIntrospectionDetailsItem)dataItem;
protected EditPartFactoryKISSDetailsItem getRootObject() {
return (EditPartFactoryKISSDetailsItem)dataItem;
}
}
/*******************************************************************************
* Copyright (c) 2011, 2018 fortiss GmbH.
*
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
* which is available at https://www.apache.org/licenses/LICENSE-2.0.
*
* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
*******************************************************************************/
package org.fortiss.tooling.kernel.ui.introspection.details.handler;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeContentProviderBase;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeTableViewer;
import org.fortiss.tooling.kernel.introspection.items.EObjectAwareKISSDetailsItemBase;
import org.fortiss.tooling.kernel.introspection.items.ElementCompositorKISSDetailsItem;
import org.fortiss.tooling.kernel.service.IElementCompositorService;
import javafx.scene.Node;
/**
* Introspection UI handler for the {@link IElementCompositorService}.
*
* @author hoelzl
*/
public final class ElementCompositorKISSDetailsUIHandler
extends EObjectAwareKISSDetailsUIHandlerBase {
/** {@inheritDoc} */
@Override
public Node createDisplayControl() {
String heading = "Type to search registered element compositors:";
String footer = "Number of currently registered element compositors: " +
getRootObject().countHandlers();
return createFilteredTree(heading, footer);
}
/** {@inheritDoc} */
@Override
protected void createTreeColumns(DynamicTreeTableViewer<Object> viewer) {
createDefaultTreeColumns(viewer, "Class / Compositor", 250, "Compositor Class", 400,
"EObject Class", 400);
}
/** {@inheritDoc} */
@Override
protected DynamicTreeContentProviderBase<Object> createContentProvider() {
return new EObjectAwareTreeContentProviderBase() {
@Override
protected EObjectAwareKISSDetailsItemBase<?> getInputObject() {
return ElementCompositorKISSDetailsUIHandler.this.getRootObject();
}
};
}
/** {@inheritDoc} */
@Override
protected ElementCompositorKISSDetailsItem getRootObject() {
return (ElementCompositorKISSDetailsItem)dataItem;
}
}
/*******************************************************************************
* Copyright (c) 2011, 2018 fortiss GmbH.
*
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
* which is available at https://www.apache.org/licenses/LICENSE-2.0.
*
* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
*******************************************************************************/
package org.fortiss.tooling.kernel.ui.introspection.details.handler;
import static java.util.Comparator.comparing;
import static org.fortiss.tooling.kernel.ui.introspection.ClipboardCopyHelper.createCopyClassNameMenu;
import java.util.Comparator;
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.kernel.ui.introspection.details.DetailsUIHandlerBase;
import javafx.scene.Node;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
/**
* Base class for details UI implementations with filtered tree viewer.
*
* @author hoelzl
*/
public abstract class KISSDetailsUIHandlerBase extends DetailsUIHandlerBase {
/** {@inheritDoc} */
@Override
public Node createDisplayControl() {
return new Label("No details available!");
}
/** Creates the filtered tree control. */
protected final BorderPane createFilteredTree(String searchFieldAdvice, String footerLabel) {
BorderPane pane = new BorderPane();
DynamicTreeTableViewer<Object> treeView = new DynamicTreeTableViewer<Object>(
getRootObject(), false, 0, createContentProvider(), createUIProvider());
createTreeColumns(treeView);
pane.setCenter(treeView.getControl());
if(searchFieldAdvice != null) {
TextField searchField = new TextField();
searchField.setPromptText(searchFieldAdvice);
searchField.textProperty().addListener((obs, oldValue, newValue) -> {
treeView.update();
});
pane.setTop(searchField);
}
if(footerLabel != null) {
Label footer = new Label(footerLabel);
pane.setBottom(footer);
}
return pane;
}
/** Returns the root object for the tree-table viewer. */
protected abstract Object getRootObject();
/** Returns the content provider for the tree-table viewer. */
protected abstract DynamicTreeContentProviderBase<Object> createContentProvider();
/** Returns the label provider for the tree-table viewer. */
protected abstract DynamicTreeTableUIProviderBase<Object> createUIProvider();
/** Returns the Comparator used to sort the elements in the viewer. */
protected Comparator<Object> createSorter() {
return comparing(Object::toString);
}
/**
* Tests the given object's toString representation for inclusion under the given text filter
* expression. The filter expression supports wildcard matching with {@code '?'} for a single
* character and {@code '*'} for arbitrary many characters.
*/
protected boolean testObjectFilter(String filterExpression, Object dataItem) {
if(dataItem == null) {
return false;
}
filterExpression = filterExpressionSanityCheck(filterExpression);
return dataItem.toString().matches(filterExpression);
}
/** Tests the given filter expression and replaces it if necessary. */
protected String filterExpressionSanityCheck(String filterExpression) {
if(filterExpression == null || filterExpression.trim().equals("")) {
filterExpression = ".*";
} else {
if(!filterExpression.endsWith("*")) {
filterExpression += '*';
}
if(!filterExpression.startsWith("*")) {
filterExpression = '*' + filterExpression;
}
filterExpression = filterExpression.replace("?", ".?").replace("*", ".*");
}
return filterExpression;
}
/** Creates the columns for the tree-table viewer. */
protected abstract void createTreeColumns(DynamicTreeTableViewer<Object> viewer);
/** Creates a context menu with an entry to copy the given String. */
protected final ContextMenu createCopyClassNameMenuItem(Class<?> toCopy) {
return createCopyClassNameMenu(toCopy);
}
}
......@@ -13,54 +13,54 @@
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.ui.internal.introspection.details.handler;
package org.fortiss.tooling.kernel.ui.introspection.details.handler;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Tree;
import org.fortiss.tooling.kernel.introspection.items.EObjectAwareIntrospectionDetailsItemBase;
import org.fortiss.tooling.kernel.introspection.items.LibraryServiceIntrospectionDetailsItem;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeContentProviderBase;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeTableViewer;
import org.fortiss.tooling.kernel.introspection.items.EObjectAwareKISSDetailsItemBase;
import org.fortiss.tooling.kernel.introspection.items.LibraryKISSDetailsItem;
import org.fortiss.tooling.kernel.service.ILibraryService;
import javafx.scene.Node;
/**
* {@link IntrospectionDetailsUIHandlerBase} for {@link ILibraryService}.
* {@link KISSDetailsUIHandlerBase} for {@link ILibraryService}.
*
* @author hoelzl
*/
public final class LibraryServiceIntrospectionDetailsUIHandler
extends EObjectAwareIntrospectionDetailsUIHandlerBase {
public final class LibraryKISSDetailsUIHandler
extends EObjectAwareKISSDetailsUIHandlerBase {
/** {@inheritDoc} */
@Override
public Control createComposite(ScrolledComposite parent) {
public Node createDisplayControl() {
String heading = "Type to search registered library element handler:";
String footer = "Number of currently registered library element handlers: " +
getInputObject().countHandlers();
return createFilteredTreeInTabFolder(parent, heading, footer, "Registered Handlers");
getRootObject().countHandlers();
return createFilteredTree(heading, footer);
}
/** {@inheritDoc} */
@Override
protected void createTreeColumns(Tree tree) {
protected void createTreeColumns(DynamicTreeTableViewer<Object> tree) {
createDefaultTreeColumns(tree, "Class / Provider", 250, "Provider Class", 400,
"EObject Class", 400);
}
/** {@inheritDoc} */
@Override
protected ITreeContentProvider createContentProvider() {
protected DynamicTreeContentProviderBase<Object> createContentProvider() {
return new EObjectAwareTreeContentProviderBase() {
@Override
protected EObjectAwareIntrospectionDetailsItemBase<?> getInputObject() {
return LibraryServiceIntrospectionDetailsUIHandler.this.getInputObject();
protected EObjectAwareKISSDetailsItemBase<?> getInputObject() {
return LibraryKISSDetailsUIHandler.this.getRootObject();
}
};
}
/** {@inheritDoc} */
@Override
protected LibraryServiceIntrospectionDetailsItem getInputObject() {
return (LibraryServiceIntrospectionDetailsItem)dataItem;
protected LibraryKISSDetailsItem getRootObject() {
return (LibraryKISSDetailsItem)dataItem;
}
}
/*******************************************************************************
* Copyright (c) 2011, 2018 fortiss GmbH.
*
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
* which is available at https://www.apache.org/licenses/LICENSE-2.0.
*
* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
*******************************************************************************/
package org.fortiss.tooling.kernel.ui.introspection.details.handler;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeContentProviderBase;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeTableViewer;
import org.fortiss.tooling.kernel.introspection.items.EObjectAwareKISSDetailsItemBase;
import org.fortiss.tooling.kernel.introspection.items.MigrationKISSDetailsItem;
import org.fortiss.tooling.kernel.service.IMigrationService;
import org.fortiss.tooling.kernel.ui.introspection.details.DetailsUIHandlerBase;
import javafx.scene.Node;
/**
* {@link DetailsUIHandlerBase} for {@link IMigrationService}.
*
* @author hoelzl
*/
public class MigrationKISSDetailsUIHandler
extends EObjectAwareKISSDetailsUIHandlerBase {
/** {@inheritDoc} */
@Override
public Node createDisplayControl() {
String heading = "Type to search registered migration providers:";
String footer = "Number of currently registered migration providers: " +
getRootObject().countHandlers();
return createFilteredTree(heading, footer);
}
/** {@inheritDoc} */
@Override
protected void createTreeColumns(DynamicTreeTableViewer<Object> tree) {
createDefaultTreeColumns(tree, "Class / Provider", 250, "Provider Class", 400,
"EObject Class", 400);
}
/** {@inheritDoc} */
@Override
protected DynamicTreeContentProviderBase<Object> createContentProvider() {
return new EObjectAwareTreeContentProviderBase() {
@Override
protected EObjectAwareKISSDetailsItemBase<?> getInputObject() {
return MigrationKISSDetailsUIHandler.this.getRootObject();
}
};
}
/** {@inheritDoc} */
@Override
protected MigrationKISSDetailsItem getRootObject() {
return (MigrationKISSDetailsItem)dataItem;
}
}
/*******************************************************************************
* Copyright (c) 2011, 2018 fortiss GmbH.
*
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
* which is available at https://www.apache.org/licenses/LICENSE-2.0.
*
* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
*******************************************************************************/
package org.fortiss.tooling.kernel.ui.introspection.details.handler;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeContentProviderBase;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeTableViewer;
import org.fortiss.tooling.kernel.introspection.items.EObjectAwareKISSDetailsItemBase;
import org.fortiss.tooling.kernel.ui.internal.ModelEditorBindingService;
import org.fortiss.tooling.kernel.ui.introspection.details.DetailsUIHandlerBase;
import org.fortiss.tooling.kernel.ui.introspection.items.ModelEditorBindingKISSDetailsItem;
import javafx.scene.Node;
/**
* {@link DetailsUIHandlerBase} for {@link ModelEditorBindingService}.
*
* @author hoelzl
*/
public final class ModelEditorBindingKISSDetailsUIHandler
extends EObjectAwareKISSDetailsUIHandlerBase {
/** {@inheritDoc} */
@Override
public Node createDisplayControl() {
String heading = "Type to search registered model editor bindings:";
String footer = "Number of currently registered model editor bindings: " +
getRootObject().countHandlers();
return createFilteredTree(heading, footer);
}
/** {@inheritDoc} */
@Override
protected void createTreeColumns(DynamicTreeTableViewer<Object> tree) {
createDefaultTreeColumns(tree, "Class / Binding", 250, "Binding Class", 400,
"EObject Class", 400);
}
/** {@inheritDoc} */
@Override
protected DynamicTreeContentProviderBase<Object> createContentProvider() {
return new EObjectAwareTreeContentProviderBase() {
@Override
protected EObjectAwareKISSDetailsItemBase<?> getInputObject() {
return ModelEditorBindingKISSDetailsUIHandler.this.getRootObject();
}
};
}
/** {@inheritDoc} */
@Override
protected ModelEditorBindingKISSDetailsItem getRootObject() {
return (ModelEditorBindingKISSDetailsItem)dataItem;
}
}
/*******************************************************************************
* Copyright (c) 2011, 2018 fortiss GmbH.
*
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
* which is available at https://www.apache.org/licenses/LICENSE-2.0.
*
* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
*******************************************************************************/
package org.fortiss.tooling.kernel.ui.introspection.details.handler;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeContentProviderBase;
import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeTableViewer;
import org.fortiss.tooling.kernel.introspection.items.EObjectAwareKISSDetailsItemBase;
import org.fortiss.tooling.kernel.ui.internal.ModelElementHandlerService;
import org.fortiss.tooling.kernel.ui.introspection.details.DetailsUIHandlerBase;
import org.fortiss.tooling.kernel.ui.introspection.items.ModelElementHandlerKISSDetailsItem;
import javafx.scene.Node;
/**
* {@link DetailsUIHandlerBase} for {@link ModelElementHandlerService}.
*
* @author hoelzl
*/
public final class ModelElementHandlerKISSDetailsUIHandler
extends EObjectAwareKISSDetailsUIHandlerBase {
/** {@inheritDoc} */
@Override
public Node createDisplayControl() {
String heading = "Type to search registered model element handlers:";
String footer = "Number of currently registered model element handlers: " +
getRootObject().countHandlers();
return createFilteredTree(heading, footer);
}
/** {@inheritDoc} */
@Override
protected void createTreeColumns(DynamicTreeTableViewer<Object> tree) {
createDefaultTreeColumns(tree, "Class / Handler", 250, "Handler Class", 400,
"EObject Class", 400);
}
/** {@inheritDoc} */
@Override
protected DynamicTreeContentProviderBase<Object> createContentProvider() {
return new EObjectAwareTreeContentProviderBase() {
@Override
protected EObjectAwareKISSDetailsItemBase<?> getInputObject() {
return ModelElementHandlerKISSDetailsUIHandler.this.getRootObject();
}
};
}
/** {@inheritDoc} */
@Override
protected ModelElementHandlerKISSDetailsItem getRootObject() {
return (ModelElementHandlerKISSDetailsItem)dataItem;
}
}
/*******************************************************************************
* Copyright (c) 2011, 2018 fortiss GmbH.
*
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
* which is available at https://www.apache.org/licenses/LICENSE-2.0.
*
* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
*******************************************************************************/
package org.fortiss.tooling.kernel.ui.introspection.details.handler;
import static java.util.Arrays.asList;
import static java.util.Collections.emptyList;
import java.util.Collection;
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.kernel.extension.IPrototypeProvider;
import org.fortiss.tooling.kernel.extension.data.Prototype;
import org.fortiss.tooling.kernel.extension.data.PrototypeCategory;
import org.fortiss.tooling.kernel.service.IPrototypeService;
import javafx.scene.Node;
import javafx.scene.control.ContextMenu;
/**
* Introspection UI handler for the {@link IPrototypeService}.
*
* @author hoelzl
*/
public final class PrototypeKISSDetailsUIHandler extends KISSDetailsUIHandlerBase {
/** {@inheritDoc} */
@Override
public Node createDisplayControl() {
String footer = "Number of currently registered Prototypes: " +
IPrototypeService.getInstance().getAllPrototypes().size() + " (" +
IPrototypeService.getInstance().getPrimaryPrototypes().size() +
" primary Prototypes)";
return createFilteredTree(null, footer);
}
/** {@inheritDoc} */
@Override
protected void createTreeColumns(DynamicTreeTableViewer<Object> viewer) {
viewer.addColumn("Category / Prototype", 200);
viewer.addColumn("Provider Class", 400);
viewer.addColumn("EObject Class", 400);
viewer.addColumn("Primary", 80);
}
/** Returns the label for the given Prototype and column. */
private String getPrototypeLabelForFirstColumn(Prototype arche, int column) {
switch(column) {
case 0:
return arche.getName();
case 1:
return findPrototypeProviderClass(arche).getName();
case 2:
return arche.getPrototype().getClass().getName();
case 3:
return arche.isPrimary() ? "X" : null;
default:
}
return null;
}
/** Find the Prototype provider for the given Prototype. */
private Class<? extends IPrototypeProvider> findPrototypeProviderClass(Prototype arche) {
for(IPrototypeProvider provider : IPrototypeService.getInstance().getPrototypeProviders()) {
if(provider.getPrototypes().contains(arche)) {
return provider.getClass();
}
}
return null;
}
/** {@inheritDoc} */
@Override
protected Object getRootObject() {
return IPrototypeService.getInstance();
}
/** {@inheritDoc} */
@Override
protected DynamicTreeContentProviderBase<Object> createContentProvider() {
return new DynamicTreeContentProviderBase<Object>() {
/** {@inheritDoc} */
@Override
protected Collection<? extends Object> getChildren(Object parent) {
if(parent instanceof IPrototypeService) {
return ((IPrototypeService)parent).getAllTopLevelPrototypesCategories();
}
if(parent instanceof PrototypeCategory) {
PrototypeCategory cat = (PrototypeCategory)parent;
return asList(cat.getChildren());
}
// Prototype
return emptyList();
}
};
}
/** {@inheritDoc} */
@Override
protected DynamicTreeTableUIProviderBase<Object> createUIProvider() {
return new DynamicTreeTableUIProviderBase<Object>() {
@Override
public String getLabel(Object element, int column) {
if(element instanceof Prototype) {
return getPrototypeLabelForFirstColumn((Prototype)element, column);
}
if(element instanceof PrototypeCategory) {
return column == 0 ? ((PrototypeCategory)element).getName() : null;
}
if(element == IPrototypeService.getInstance()) {
return column == 0 ? "Prototype Service" : null;
}
return null;
}
@Override
public Node getIconNode(Object element, int column) {
return null;
}
/** {@inheritDoc} */
@Override
public ContextMenu createContextMenu(Object element, int column) {
if(element instanceof Prototype) {
Prototype arche = (Prototype)element;
Class<?> toCopy;
if(column == 1) {
toCopy = findPrototypeProviderClass(arche);
} else if(column == 2) {
toCopy = arche.getPrototype().getClass();
} else {
toCopy = null;
}
if(toCopy != null) {
return createCopyClassNameMenuItem(toCopy);
}
}
return null;
}
};
}
}
AllocationEditPartFactoryKISSDetailsItem.java 32851f78313d514dbdceaf7ff403b72519970c04 GREEN
ContextMenuKISSDetailsItem.java 5842153c7f7445ad2863614aee78c0c205011521 GREEN
EditPartFactoryKISSDetailsItem.java 78706937ac2cdf0545bb512a3190de0437f0770f GREEN
ModelEditorBindingKISSDetailsItem.java a95423f878cc2a13e84c2aebdd6d5e4376c7ec94 GREEN
ModelElementHandlerKISSDetailsItem.java 24d1ab16879d66cd15ee03b9ed61d39d7ca35aab GREEN
......@@ -25,7 +25,7 @@ import org.fortiss.tooling.kernel.extension.IConnectionCompositor;
import org.fortiss.tooling.kernel.extension.data.IConnectionCompositionContext;
import org.fortiss.tooling.kernel.introspection.IIntrospectionDetailsItem;
import org.fortiss.tooling.kernel.introspection.IIntrospectionItem;
import org.fortiss.tooling.kernel.introspection.items.ConnectionCompositorServiceIntrospectionDetailsItem;
import org.fortiss.tooling.kernel.introspection.items.ConnectionCompositorKISSDetailsItem;
import org.fortiss.tooling.kernel.service.IConnectionCompositorService;
import org.fortiss.tooling.kernel.service.IKernelIntrospectionSystemService;
import org.fortiss.tooling.kernel.service.base.EObjectAware2ServiceBase;
......@@ -231,6 +231,6 @@ public class ConnectionCompositorService
/** {@inheritDoc} */
@Override
public IIntrospectionDetailsItem getDetailsItem() {
return new ConnectionCompositorServiceIntrospectionDetailsItem(handlersBySource);
return new ConnectionCompositorKISSDetailsItem(handlersBySource);
}
}