[MetaModelViewer] Sphinx-Registry UI elements are now hidden if not in use
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/RegisterECOREfilesAction.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/RegisterEcoreFileAction.java
similarity index 68%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/RegisterECOREfilesAction.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/RegisterEcoreFileAction.java
index f1a24eb..82673b7 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/RegisterECOREfilesAction.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/RegisterEcoreFileAction.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ * Copyright (c) 2017-2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -33,21 +33,15 @@
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
-import org.eclipse.jface.viewers.ComboViewer;
-public class RegisterECOREfilesAction {
+public class RegisterEcoreFileAction {
// Suppress default constructor
- private RegisterECOREfilesAction() {
+ private RegisterEcoreFileAction() {
throw new IllegalStateException("Utility class");
}
-
- @SuppressWarnings({ "unused", "rawtypes", "unchecked" })
- public static ResourceSet loadECOREs(List<String> ecoreFiles, ComboViewer combo_ecore) throws IOException {
- final Registry master_ePackageRegistry = EPackage.Registry.INSTANCE;
-
- System.out.println(master_ePackageRegistry.size());
+ public static List<String> loadEcoreFiles(List<String> ecoreFiles) throws IOException {
ResourceSet metaDataResourceSet = new ResourceSetImpl();
@@ -59,12 +53,8 @@
extensionToFactoryMap.put("ecore", new EcoreResourceFactoryImpl());
-// extensionToFactoryMap.put("xmi", new XMIResourceFactoryImpl());
-
- // resourceSet.getURIConverter().getURIMap().putAll(EcorePlugin.computePlatformURIMap(true));
-
// register Ecore model in resourceSet registry
- Map packageRegistry = metaDataResourceSet.getPackageRegistry();
+ Registry packageRegistry = metaDataResourceSet.getPackageRegistry();
packageRegistry.put("http://www.eclipse.org/emf/2002/Ecore", EcorePackage.eINSTANCE);
@@ -80,42 +70,31 @@
}
} else {
packageRegistry.put(loadEPackage.getNsURI(), loadEPackage);
-
}
-// master_ePackageRegistry.put(loadEPackage.getNsURI(), loadEPackage);
-
}
EcoreUtil.resolveAll(metaDataResourceSet);
/*-for sorting */
- ArrayList arrayList = new ArrayList(master_ePackageRegistry.keySet());
+ List<String> keyList = new ArrayList<>(EPackage.Registry.INSTANCE.keySet());
+ Collections.sort(keyList);
- Collections.sort(arrayList);
+ keyList.addAll(0, metaDataResourceSet.getPackageRegistry().keySet());
- arrayList.addAll(0, metaDataResourceSet.getPackageRegistry().keySet());
+ EPackage.Registry.INSTANCE.putAll(metaDataResourceSet.getPackageRegistry());
- master_ePackageRegistry.putAll(metaDataResourceSet.getPackageRegistry());
-
- combo_ecore.setInput(arrayList.toArray());
-
- return metaDataResourceSet;
+ return keyList;
}
private static EPackage loadEPackage(String path, ResourceSet metaResourceSet) throws IOException {
-// path = path.contains("file:////") ? path : "file:////" + getCanonicalPathFullPath(path);
path = getCanonicalPathFullPath(path);
-
-// Resource metaResource = metaResourceSet.getResource(URI.createURI(path), true);
Resource metaResource = metaResourceSet.getResource(URI.createFileURI(path), true);
-
metaResource.load(Collections.emptyMap());
EObject eObject = metaResource.getContents().get(0);
-
return (EPackage) eObject;
}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/MetaModelExplorerView.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/MetaModelExplorerView.java
index ba1f441..b30a4e5 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/MetaModelExplorerView.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/MetaModelExplorerView.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ * Copyright (c) 2017-2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -27,14 +27,9 @@
import org.eclipse.app4mc.emf.metamodelviewer.preferences.MetaModelViewerPreferenceConstants;
import org.eclipse.app4mc.emf.metamodelviewer.utils.ElementSearchPatternFilter;
import org.eclipse.app4mc.emf.metamodelviewer.utils.PluginUtils;
-import org.eclipse.app4mc.emf.metamodelviewer.utils.RegisterECOREfilesAction;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.RegisterEcoreFileAction;
import org.eclipse.app4mc.emf.metamodelviewer.views.providers.ViewContentProvider;
import org.eclipse.app4mc.emf.metamodelviewer.views.providers.ViewLabelProvider;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EPackage.Registry;
@@ -55,10 +50,12 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
@@ -78,7 +75,7 @@
* The ID of the view as specified by the extension.
*/
public static final String ID = "org.eclipse.app4mc.emf.metamodelviewer.views.MetaModelExplorerView";
- private static int id_Counter = 1;
+ private static int viewCounter = 1;
private TreeViewer viewer;
private Action filterClassesAction;
private Action registerEcoreFilesAction;
@@ -87,14 +84,16 @@
private boolean filterForEClassifiersBoolean = true;
private boolean filterForAttributesBoolean;
private ElementSearchPatternFilter patternFilter;
- private ComboViewer combo_ecore;
+ private ComboViewer ecoreCombo;
private ISphinxWrapper sphinxWrapper;
+
@Override
public void init(IViewSite site) throws PartInitException {
super.init(site);
- sphinxWrapper=PluginUtils.getObjectOfSphinxWrapper();
+ sphinxWrapper = PluginUtils.getObjectOfSphinxWrapper();
}
+
/**
* This is a callback that will allow us to create the viewer and initialize it.
*/
@@ -102,86 +101,68 @@
public void createPartControl(final Composite parent) {
parent.setLayout(new GridLayout(2, false));
- final Label label = new Label(parent, 0);
+ final Label sphinxLabel = new Label(parent, 0);
+ final Combo sphinxCombo = new Combo(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
- label.setText("SPHINX Registry");
+ Label ecoreLabel = new Label(parent, 0);
+ ecoreLabel.setText("ECORE Registry");
+ ecoreLabel.setLayoutData(new GridData());
- label.setLayoutData(new GridData());
-
- final Combo combo = new Combo(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
-
- final Label label_ecore = new Label(parent, 0);
-
- label_ecore.setText("ECORE Registry");
-
- label_ecore.setLayoutData(new GridData());
-
- combo_ecore = new ComboViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
+ ecoreCombo = new ComboViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
final Registry ePackageRegistry = EPackage.Registry.INSTANCE;
-
final Set<String> keySet = ePackageRegistry.keySet();
- // for (final String string : new TreeSet<String>(keySet)) {
- //
- // combo_ecore.add(string);
- // }
- combo_ecore.setContentProvider(ArrayContentProvider.getInstance());
- combo_ecore.setLabelProvider(new LabelProvider() {
- @Override
- public String getText(Object element) {
- return super.getText(element);
- }
- });
-
ArrayList<String> arrayList = new ArrayList<>(keySet);
-
Collections.sort(arrayList);
- combo_ecore.setInput(arrayList.toArray());
+ ecoreCombo.setContentProvider(ArrayContentProvider.getInstance());
+ ecoreCombo.setLabelProvider(new LabelProvider());
+ ecoreCombo.setInput(arrayList.toArray());
- combo_ecore.getCombo().addSelectionListener(new SelectionAdapter() {
+ ecoreCombo.getCombo().addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(final SelectionEvent e) {
- combo.deselectAll();
+ sphinxCombo.deselectAll();
- final String text = combo_ecore.getCombo().getText();
-
+ final String text = ecoreCombo.getCombo().getText();
final EPackage ePackage = ePackageRegistry.getEPackage(text);
-
getViewer().setInput(ePackage);
}
});
-// final List<IMetaModelDescriptor> descriptors = MetaModelDescriptorRegistry.INSTANCE
-// .getDescriptors(MetaModelDescriptorRegistry.ANY_MM);
+ if (sphinxWrapper == null) {
+ // hide Sphinx row
+ hideControl(sphinxLabel);
+ hideControl(sphinxCombo);
+ } else {
+ // initialize
+ sphinxLabel.setText("SPHINX Registry");
+ sphinxLabel.setLayoutData(new GridData());
-// for (final IMetaModelDescriptor iMetaModelDescriptor : descriptors) {
-
- if(sphinxWrapper!=null) {
for (final String identifier : sphinxWrapper.getListOfMetaModelDescriptorIDs()) {
- combo.add(identifier);
+ sphinxCombo.add(identifier);
}
- }
- combo.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- combo_ecore.getCombo().deselectAll();
-
- final String text = combo.getText();
-
- if(sphinxWrapper !=null) {
- final Object descriptor =sphinxWrapper.getMetaModelDescriptor(text);
- getViewer().setInput(descriptor);
+ sphinxCombo.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ ecoreCombo.getCombo().deselectAll();
+
+ final String text = sphinxCombo.getText();
+
+ if (sphinxWrapper != null) {
+ final Object descriptor = sphinxWrapper.getMetaModelDescriptor(text);
+ getViewer().setInput(descriptor);
+ }
}
- }
- });
+ });
+ }
this.patternFilter = new ElementSearchPatternFilter(this.filterForEClassifiersBoolean,
this.filterForAttributesBoolean);
final FilteredTree filteredTree = new FilteredTree(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER,
- this.patternFilter, true);
+ this.patternFilter, true, false);
filteredTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 0));
@@ -195,11 +176,8 @@
gridLayoutData.verticalAlignment = GridData.FILL;
this.viewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 0));
-
this.viewer.setContentProvider(new ViewContentProvider(sphinxWrapper));
-
this.viewer.setInput(getViewSite());
-
this.viewer.setLabelProvider(new ViewLabelProvider());
getSite().setSelectionProvider(this.viewer);
@@ -213,6 +191,20 @@
contributeToActionBars();
}
+ private void hideControl(Control control) {
+
+ control.setVisible(false);
+
+ GridData data = (GridData) control.getLayoutData();
+ if (data == null) {
+ data = new GridData();
+ }
+
+ data.exclude = true;
+ control.setLayoutData(data);
+ control.setSize(new Point(0, 0));
+ }
+
public TreeViewer getViewer() {
return this.viewer;
}
@@ -281,11 +273,7 @@
this.filterClassesAction = new Action("Filter for EClassifers", IAction.AS_CHECK_BOX) {
@Override
public void run() {
- if (isChecked()) {
- setFilterForEClassifiersBoolean(true);
- } else {
- setFilterForEClassifiersBoolean(false);
- }
+ setFilterForEClassifiersBoolean(isChecked());
}
};
@@ -307,7 +295,7 @@
@Override
public void run() {
try {
- getViewSite().getPage().showView(ID, id_Counter++ + "", IWorkbenchPage.VIEW_VISIBLE);
+ getViewSite().getPage().showView(ID, viewCounter++ + "", IWorkbenchPage.VIEW_VISIBLE);
} catch (PartInitException e) {
e.printStackTrace();
}
@@ -319,13 +307,9 @@
this.registerEcoreFilesAction = new Action("Register ECORE files") {
@Override
public void run() {
- // TODO: add implementation for CSV report generation
- Object input = viewer.getInput();
FileDialog dialog = new FileDialog(Display.getDefault().getActiveShell(), SWT.OPEN | SWT.MULTI);
-
dialog.setFilterExtensions(new String[] { "*.ecore" });
-
dialog.open();
if ((dialog.getFileName() == null) || (dialog.getFileNames() == null)) {
@@ -333,20 +317,19 @@
}
List<String> files = new ArrayList<>();
-
for (String fileName : dialog.getFileNames()) {
String filePath = dialog.getFilterPath() + File.separator + fileName;
-
files.add(filePath);
}
+ List<String> keyList = Collections.emptyList();
try {
- RegisterECOREfilesAction.loadECOREs(files, combo_ecore);
+ keyList = RegisterEcoreFileAction.loadEcoreFiles(files);
} catch (Exception e) {
- Display.getDefault().asyncExec(
- () -> MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", e.getMessage())
- );
+ Display.getDefault().asyncExec(() -> MessageDialog.openError(Display.getDefault().getActiveShell(),
+ "Error", e.getMessage()));
}
+ ecoreCombo.setInput(keyList.toArray());
}
};
this.registerEcoreFilesAction.setToolTipText("Register ECORE files");
@@ -354,46 +337,44 @@
}
private void hookDoubleClickAction() {
- this.viewer.addDoubleClickListener(
- event -> {
- final ISelection selection = event.getSelection();
+ this.viewer.addDoubleClickListener(event -> {
+ final ISelection selection = event.getSelection();
- if (selection instanceof TreeSelection) {
- final Object firstElement = ((TreeSelection) selection).getFirstElement();
+ if (selection instanceof TreeSelection) {
+ final Object firstElement = ((TreeSelection) selection).getFirstElement();
- if (firstElement instanceof EObject) {
- Shell parentShell = null;
+ if (firstElement instanceof EObject) {
+ Shell parentShell = null;
- String displayDialogStyle = (Activator.getDefault().getPreferenceStore()
- .getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY));
+ String displayDialogStyle = (Activator.getDefault().getPreferenceStore()
+ .getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY));
- if ((displayDialogStyle != null)
- && displayDialogStyle.equals(MetaModelViewerPreferenceConstants.V_ON_TOP)) {
- parentShell = new Shell(SWT.ON_TOP);
- } else {
- parentShell = new Shell();
- }
-
- // final String name = ((firstElement instanceof EClass) ? ((EClass)
- // firstElement).getName() :
- // "");
- //
- // parentShell.setText("Details of : " + ((EClass)
- // firstElement).eClass().getName() + " " +
- // name);
- //
- //
- // final TaskBar systemTaskBar = parentShell.getDisplay().getSystemTaskBar();
- // final TaskItem taskItem = systemTaskBar.getItem(parentShell);
- //
- // taskItem.setData(parentShell);
- // taskItem.setOverlayText(name);
- // taskItem.setText(name);
- new SelectedElementContentDialog(parentShell, getSite(), (EObject) firstElement).open();
- }
+ if ((displayDialogStyle != null)
+ && displayDialogStyle.equals(MetaModelViewerPreferenceConstants.V_ON_TOP)) {
+ parentShell = new Shell(SWT.ON_TOP);
+ } else {
+ parentShell = new Shell();
}
+
+ // final String name = ((firstElement instanceof EClass) ? ((EClass)
+ // firstElement).getName() :
+ // "");
+ //
+ // parentShell.setText("Details of : " + ((EClass)
+ // firstElement).eClass().getName() + " " +
+ // name);
+ //
+ //
+ // final TaskBar systemTaskBar = parentShell.getDisplay().getSystemTaskBar();
+ // final TaskItem taskItem = systemTaskBar.getItem(parentShell);
+ //
+ // taskItem.setData(parentShell);
+ // taskItem.setOverlayText(name);
+ // taskItem.setText(name);
+ new SelectedElementContentDialog(parentShell, getSite(), (EObject) firstElement).open();
}
- );
+ }
+ });
}
/**
@@ -439,7 +420,5 @@
this.patternFilter.setFilterForAttributesBoolean(filterForAttributesBoolean);
}
-
-
-
+
}