From 8b6cd0443756a97a5a80e64da26fa1b8955a3e3b Mon Sep 17 00:00:00 2001 From: Kasper Gammeltoft Date: Thu, 30 Jun 2016 15:37:57 -0400 Subject: [PATCH 1/3] Added implementation of STL importer into ASCIISTLGeometryImporter.java Signed-off-by: Kasper Gammeltoft --- org.eclipse.eavp.viz/IGESTest.launch | 50 + .../META-INF/MANIFEST.MF | 5 +- .../plugin.xml | 11 +- .../GeometryActionBarContributor.java | 423 ++++ .../geometry/presentation/GeometryEditor.java | 1819 +++++++++++++++++ .../presentation/GeometryEditorPlugin.java | 91 + .../presentation/GeometryModelWizard.java | 628 ++++++ .../antlr/PartialSTLContentAssistParser.class | Bin 0 -> 2340 bytes .../ide/contentassist/antlr/STLParser$1.class | Bin 0 -> 4069 bytes .../ide/contentassist/antlr/STLParser.class | Bin 0 -> 3060 bytes .../antlr/internal/InternalSTL.g | 1339 ++++++++++++ .../antlr/internal/InternalSTL.tokens | 39 + .../internal/InternalSTLLexer$DFA12.class | Bin 0 -> 3088 bytes .../antlr/internal/InternalSTLLexer.class | Bin 0 -> 13160 bytes .../antlr/internal/InternalSTLParser.class | Bin 0 -> 44603 bytes .../model/ui/internal/ModelActivator.class | Bin 0 -> 3934 bytes .../bin/xtext/ui/.STLUiModule.xtendbin | Bin 0 -> 1996 bytes .../bin/xtext/ui/.gitignore | 1 + .../bin/xtext/ui/AbstractSTLUiModule.class | Bin 0 -> 11581 bytes .../ui/STLExecutableExtensionFactory.class | Bin 0 -> 849 bytes .../bin/xtext/ui/STLUiModule.class | Bin 0 -> 498 bytes .../bin/xtext/ui/STLUiModule.xtend | 21 + .../.STLProposalProvider.xtendbin | Bin 0 -> 1647 bytes .../bin/xtext/ui/contentassist/.gitignore | 1 + .../AbstractSTLProposalProvider.class | Bin 0 -> 3366 bytes .../contentassist/STLProposalProvider.class | Bin 0 -> 362 bytes .../contentassist/STLProposalProvider.xtend | 20 + .../.STLDescriptionLabelProvider.xtendbin | Bin 0 -> 1841 bytes .../ui/labeling/.STLLabelProvider.xtendbin | Bin 0 -> 2279 bytes .../bin/xtext/ui/labeling/.gitignore | 2 + .../STLDescriptionLabelProvider.class | Bin 0 -> 384 bytes .../STLDescriptionLabelProvider.xtend | 32 + .../xtext/ui/labeling/STLLabelProvider.class | Bin 0 -> 723 bytes .../xtext/ui/labeling/STLLabelProvider.xtend | 39 + .../outline/.STLOutlineTreeProvider.xtendbin | Bin 0 -> 1695 bytes .../bin/xtext/ui/outline/.gitignore | 1 + .../ui/outline/STLOutlineTreeProvider.class | Bin 0 -> 376 bytes .../ui/outline/STLOutlineTreeProvider.xtend | 23 + .../ui/quickfix/.STLQuickfixProvider.xtendbin | Bin 0 -> 1663 bytes .../bin/xtext/ui/quickfix/.gitignore | 1 + .../ui/quickfix/STLQuickfixProvider.class | Bin 0 -> 362 bytes .../ui/quickfix/STLQuickfixProvider.xtend | 32 + .../xtext/ui/.STLUiModule.java._trace | Bin 0 -> 227 bytes .../.STLProposalProvider.java._trace | Bin 0 -> 174 bytes .../.STLDescriptionLabelProvider.java._trace | Bin 0 -> 177 bytes .../ui/labeling/.STLLabelProvider.java._trace | Bin 0 -> 336 bytes .../.STLOutlineTreeProvider.java._trace | Bin 0 -> 171 bytes .../quickfix/.STLQuickfixProvider.java._trace | Bin 0 -> 169 bytes .../META-INF/MANIFEST.MF | 15 + .../impl/ASCIISTLGeometryImporterImpl.java | 119 +- .../january/geometry/impl/ComplementImpl.java | 1 - .../january/geometry/impl/CubeImpl.java | 43 +- .../january/geometry/impl/CylinderImpl.java | 74 +- .../january/geometry/impl/GeometryImpl.java | 321 ++- .../geometry/impl/IntersectionImpl.java | 1 - .../january/geometry/impl/OperatorImpl.java | 304 ++- .../january/geometry/impl/ShapeImpl.java | 366 ++-- .../january/geometry/impl/SphereImpl.java | 43 +- .../january/geometry/impl/TriangleImpl.java | 110 +- .../january/geometry/impl/TubeImpl.java | 109 +- .../january/geometry/impl/UnionImpl.java | 1 - .../january/geometry/impl/VertexImpl.java | 96 +- 62 files changed, 5274 insertions(+), 907 deletions(-) create mode 100644 org.eclipse.eavp.viz/IGESTest.launch create mode 100644 org.eclipse.january.geometry.model.editor/src/org/eclipse/january/geometry/presentation/GeometryActionBarContributor.java create mode 100644 org.eclipse.january.geometry.model.editor/src/org/eclipse/january/geometry/presentation/GeometryEditor.java create mode 100644 org.eclipse.january.geometry.model.editor/src/org/eclipse/january/geometry/presentation/GeometryEditorPlugin.java create mode 100644 org.eclipse.january.geometry.model.editor/src/org/eclipse/january/geometry/presentation/GeometryModelWizard.java create mode 100644 org.eclipse.january.geometry.model.ide/bin/xtext/ide/contentassist/antlr/PartialSTLContentAssistParser.class create mode 100644 org.eclipse.january.geometry.model.ide/bin/xtext/ide/contentassist/antlr/STLParser$1.class create mode 100644 org.eclipse.january.geometry.model.ide/bin/xtext/ide/contentassist/antlr/STLParser.class create mode 100644 org.eclipse.january.geometry.model.ide/bin/xtext/ide/contentassist/antlr/internal/InternalSTL.g create mode 100644 org.eclipse.january.geometry.model.ide/bin/xtext/ide/contentassist/antlr/internal/InternalSTL.tokens create mode 100644 org.eclipse.january.geometry.model.ide/bin/xtext/ide/contentassist/antlr/internal/InternalSTLLexer$DFA12.class create mode 100644 org.eclipse.january.geometry.model.ide/bin/xtext/ide/contentassist/antlr/internal/InternalSTLLexer.class create mode 100644 org.eclipse.january.geometry.model.ide/bin/xtext/ide/contentassist/antlr/internal/InternalSTLParser.class create mode 100644 org.eclipse.january.geometry.model.ui/bin/org/eclipse/january/geometry/model/ui/internal/ModelActivator.class create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/.STLUiModule.xtendbin create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/.gitignore create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/AbstractSTLUiModule.class create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/STLExecutableExtensionFactory.class create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/STLUiModule.class create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/STLUiModule.xtend create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/contentassist/.STLProposalProvider.xtendbin create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/contentassist/.gitignore create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/contentassist/AbstractSTLProposalProvider.class create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/contentassist/STLProposalProvider.class create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/contentassist/STLProposalProvider.xtend create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/.STLDescriptionLabelProvider.xtendbin create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/.STLLabelProvider.xtendbin create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/.gitignore create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/STLDescriptionLabelProvider.class create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/STLDescriptionLabelProvider.xtend create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/STLLabelProvider.class create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/STLLabelProvider.xtend create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/outline/.STLOutlineTreeProvider.xtendbin create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/outline/.gitignore create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/outline/STLOutlineTreeProvider.class create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/outline/STLOutlineTreeProvider.xtend create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/quickfix/.STLQuickfixProvider.xtendbin create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/quickfix/.gitignore create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/quickfix/STLQuickfixProvider.class create mode 100644 org.eclipse.january.geometry.model.ui/bin/xtext/ui/quickfix/STLQuickfixProvider.xtend create mode 100644 org.eclipse.january.geometry.model.ui/xtend-gen/xtext/ui/.STLUiModule.java._trace create mode 100644 org.eclipse.january.geometry.model.ui/xtend-gen/xtext/ui/contentassist/.STLProposalProvider.java._trace create mode 100644 org.eclipse.january.geometry.model.ui/xtend-gen/xtext/ui/labeling/.STLDescriptionLabelProvider.java._trace create mode 100644 org.eclipse.january.geometry.model.ui/xtend-gen/xtext/ui/labeling/.STLLabelProvider.java._trace create mode 100644 org.eclipse.january.geometry.model.ui/xtend-gen/xtext/ui/outline/.STLOutlineTreeProvider.java._trace create mode 100644 org.eclipse.january.geometry.model.ui/xtend-gen/xtext/ui/quickfix/.STLQuickfixProvider.java._trace diff --git a/org.eclipse.eavp.viz/IGESTest.launch b/org.eclipse.eavp.viz/IGESTest.launch new file mode 100644 index 00000000..1b73607f --- /dev/null +++ b/org.eclipse.eavp.viz/IGESTest.launch @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/org.eclipse.january.geometry.model.editor/META-INF/MANIFEST.MF b/org.eclipse.january.geometry.model.editor/META-INF/MANIFEST.MF index ba1b8218..c8c72cfe 100644 --- a/org.eclipse.january.geometry.model.editor/META-INF/MANIFEST.MF +++ b/org.eclipse.january.geometry.model.editor/META-INF/MANIFEST.MF @@ -4,11 +4,12 @@ Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.january.geometry.model.editor;singleton:=true Bundle-Version: 1.0.0.qualifier Bundle-ClassPath: . -Bundle-Activator: geometry.presentation.GeometryEditorPlugin$Implementation +Bundle-Activator: org.eclipse.january.geometry.presentation.GeometryEditorPlugin$Implementation Bundle-Vendor: %providerName Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Export-Package: geometry.presentation +Export-Package: geometry.presentation, + org.eclipse.january.geometry.presentation Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.resources;visibility:=reexport, org.eclipse.january.geometry.model.edit;visibility:=reexport, diff --git a/org.eclipse.january.geometry.model.editor/plugin.xml b/org.eclipse.january.geometry.model.editor/plugin.xml index abbb9739..3242e853 100644 --- a/org.eclipse.january.geometry.model.editor/plugin.xml +++ b/org.eclipse.january.geometry.model.editor/plugin.xml @@ -12,9 +12,9 @@ id="org.eclipse.emf.ecore.Wizard.category.ID" name="%_UI_Wizard_category"/> %_UI_GeometryModelWizard_description @@ -25,13 +25,12 @@ + class="org.eclipse.january.geometry.presentation.GeometryEditor" + contributorClass="org.eclipse.january.geometry.presentation.GeometryActionBarContributor"> - diff --git a/org.eclipse.january.geometry.model.editor/src/org/eclipse/january/geometry/presentation/GeometryActionBarContributor.java b/org.eclipse.january.geometry.model.editor/src/org/eclipse/january/geometry/presentation/GeometryActionBarContributor.java new file mode 100644 index 00000000..8bb41d58 --- /dev/null +++ b/org.eclipse.january.geometry.model.editor/src/org/eclipse/january/geometry/presentation/GeometryActionBarContributor.java @@ -0,0 +1,423 @@ +/** + */ +package org.eclipse.january.geometry.presentation; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the Geometry model editor. + * + * + * @generated + */ +public class GeometryActionBarContributor + extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * + * + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * + * + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * + * + * @generated + */ + protected IAction showPropertiesViewAction = + new Action(GeometryEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) { + GeometryEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * + * + * @generated + */ + protected IAction refreshViewerAction = + new Action(GeometryEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * + * + * @generated + */ + protected Collection createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * + * + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * + * + * @generated + */ + protected Collection createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * + * + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * + * + * @generated + */ + public GeometryActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * + * + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + toolBarManager.add(new Separator("geometry-settings")); + toolBarManager.add(new Separator("geometry-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * + * + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(GeometryEditorPlugin.INSTANCE.getString("_UI_GeometryEditor_menu"), "org.eclipse.january.geometryMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(GeometryEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(GeometryEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener + (new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * + * + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } + else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * + * + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection newChildDescriptors = null; + Collection newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in descriptors, + * and returns the collection of these actions. + * + * + * @generated + */ + protected Collection generateCreateChildActions(Collection descriptors, ISelection selection) { + Collection actions = new ArrayList(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in descriptors, + * and returns the collection of these actions. + * + * + * @generated + */ + protected Collection generateCreateSiblingActions(Collection descriptors, ISelection selection) { + Collection actions = new ArrayList(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified manager with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the actions collection, + * by inserting them before the specified contribution item contributionID. + * If contributionID is null, they are simply added. + * + * + * @generated + */ + protected void populateManager(IContributionManager manager, Collection actions, String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } + else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified manager all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the actions collection. + * + * + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * + * + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(GeometryEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(GeometryEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * + * + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * + * + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} diff --git a/org.eclipse.january.geometry.model.editor/src/org/eclipse/january/geometry/presentation/GeometryEditor.java b/org.eclipse.january.geometry.model.editor/src/org/eclipse/january/geometry/presentation/GeometryEditor.java new file mode 100644 index 00000000..dac66ad2 --- /dev/null +++ b/org.eclipse.january.geometry.model.editor/src/org/eclipse/january/geometry/presentation/GeometryEditor.java @@ -0,0 +1,1819 @@ +/** + */ +package org.eclipse.january.geometry.presentation; + + +import java.io.IOException; +import java.io.InputStream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import org.eclipse.jface.util.LocalSelectionTransfer; + +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.custom.CTabFolder; + +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.FileTransfer; +import org.eclipse.swt.dnd.Transfer; + +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; + +import org.eclipse.swt.graphics.Point; + +import org.eclipse.swt.layout.FillLayout; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; + +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import org.eclipse.ui.dialogs.SaveAsDialog; + +import org.eclipse.ui.ide.IGotoMarker; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; + +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; + + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; + +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; + +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; + +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; + +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; + +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; + +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; + +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import org.eclipse.january.geometry.provider.GeometryItemProviderAdapterFactory; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + + +/** + * This is an example of a Geometry model editor. + * + * + * @generated + */ +public class GeometryEditor + extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * + * + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * + * + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * + * + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * + * + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * + * + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * + * + * @generated + */ + protected List propertySheetPages = new ArrayList(); + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * + * + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * + * + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * + * + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * + * + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * + * + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * + * + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * + * + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * + * + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * + * + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * + * + * @generated + */ + protected Collection selectionChangedListeners = new ArrayList(); + + /** + * This keeps track of the selection of the editor as a whole. + * + * + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * + * + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * + * + * @generated + */ + protected IPartListener partListener = + new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(GeometryEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) { + if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) { + getActionBarContributor().setActiveEditor(GeometryEditor.this); + handleActivate(); + } + } + else if (p == GeometryEditor.this) { + handleActivate(); + } + } + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * + * + * @generated + */ + protected Collection removedResources = new ArrayList(); + + /** + * Resources that have been changed since last activation. + * + * + * @generated + */ + protected Collection changedResources = new ArrayList(); + + /** + * Resources that have been saved. + * + * + * @generated + */ + protected Collection savedResources = new ArrayList(); + + /** + * Map to store the diagnostic associated with a resource. + * + * + * @generated + */ + protected Map resourceToDiagnosticMap = new LinkedHashMap(); + + /** + * Controls whether the problem indication should be updated. + * + * + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * + * + * @generated + */ + protected EContentAdapter problemIndicationAdapter = + new EContentAdapter() { + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else { + resourceToDiagnosticMap.remove(resource); + } + + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + break; + } + } + } + else { + super.notifyChanged(notification); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + resourceToDiagnosticMap.remove(target); + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + } + }; + + /** + * This listens for workspace changes. + * + * + * @generated + */ + protected IResourceChangeListener resourceChangeListener = + new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection changedResources = new ArrayList(); + protected Collection removedResources = new ArrayList(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || + delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } + else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + return false; + } + + return true; + } + + public Collection getChangedResources() { + return changedResources; + } + + public Collection getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(GeometryEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == GeometryEditor.this) { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) { + GeometryEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * + * + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(GeometryEditor.this, false); + } + else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * + * + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + if (isDirty()) { + changedResources.addAll(editingDomain.getResourceSet().getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(Collections.EMPTY_MAP); + } + catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * + * + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = + new BasicDiagnostic + (Diagnostic.OK, + "org.eclipse.january.geometry.model.editor", + 0, + null, + new Object [] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) { + GeometryEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + markerHelper.deleteMarkers(editingDomain.getResourceSet()); + if (diagnostic.getSeverity() != Diagnostic.OK) { + try { + markerHelper.createMarkers(diagnostic); + } + catch (CoreException exception) { + GeometryEditorPlugin.INSTANCE.log(exception); + } + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * + * + * @generated + */ + protected boolean handleDirtyConflict() { + return + MessageDialog.openQuestion + (getSite().getShell(), + getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * + * + * @generated + */ + public GeometryEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * + * + * @generated + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new GeometryItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener + (new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec + (new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + for (Iterator i = propertySheetPages.iterator(); i.hasNext(); ) { + PropertySheetPage propertySheetPage = i.next(); + if (propertySheetPage.getControl().isDisposed()) { + i.remove(); + } + else { + propertySheetPage.refresh(); + } + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap()); + } + + /** + * This is here for the listener to be able to call it. + * + * + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * + * + * @generated + */ + public void setSelectionToViewer(Collection collection) { + final Collection theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = + new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * + * + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * + * + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * + * + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * + * + * @generated + */ + @Override + public Object [] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * + * + * @generated + */ + @Override + public Object [] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * + * + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * + * + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * + * + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * + * + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = + new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * + * + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * + * + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu= contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * + * + * @generated + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput(), editingDomain.getResourceSet().getURIConverter()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * + * + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + boolean hasErrors = !resource.getErrors().isEmpty(); + if (hasErrors || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = + new BasicDiagnostic + (hasErrors ? Diagnostic.ERROR : Diagnostic.WARNING, + "org.eclipse.january.geometry.model.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object [] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) { + return + new BasicDiagnostic + (Diagnostic.ERROR, + "org.eclipse.january.geometry.model.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * + * + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), GeometryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer)viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), GeometryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer)viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), GeometryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer)viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), GeometryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer)viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), GeometryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer)viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String [] {"a", "b"}); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), GeometryEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer)viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"}); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + setActivePage(0); + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener + (new ControlAdapter() { + boolean guard = false; + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * + * + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(1); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y + 6); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * + * + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y - 6); + } + } + } + + /** + * This is used to track the active viewer. + * + * + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * + * + * @generated + */ + @SuppressWarnings("rawtypes") + @Override + public Object getAdapter(Class key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? getContentOutlinePage() : null; + } + else if (key.equals(IPropertySheetPage.class)) { + return getPropertySheetPage(); + } + else if (key.equals(IGotoMarker.class)) { + return this; + } + else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * + * + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener + (new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * + * + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + PropertySheetPage propertySheetPage = + new ExtendedPropertySheetPage(editingDomain) { + @Override + public void setSelectionToViewer(List selection) { + GeometryEditor.this.setSelectionToViewer(selection); + GeometryEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + propertySheetPages.add(propertySheetPage); + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * + * + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList selectionList = new ArrayList(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * + * + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * + * + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map saveOptions = new HashMap(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + for (Resource resource : editingDomain.getResourceSet().getResources()) { + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } + catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) { + // Something went wrong that shouldn't. + // + GeometryEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * + * + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } + catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * + * + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * + * + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * + * + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = + getActionBars().getStatusLineManager() != null ? + getActionBars().getStatusLineManager().getProgressMonitor() : + new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * + * + * @generated + */ + public void gotoMarker(IMarker marker) { + List targetObjects = markerHelper.getTargetObjects(editingDomain, marker); + if (!targetObjects.isEmpty()) { + setSelectionToViewer(targetObjects); + } + } + + /** + * This is called during startup. + * + * + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * + * + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } + else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * + * + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * + * + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * + * + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * + * + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * + * + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? + contentOutlineStatusLineManager : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * + * + * @generated + */ + private static String getString(String key) { + return GeometryEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * + * + * @generated + */ + private static String getString(String key, Object s1) { + return GeometryEditorPlugin.INSTANCE.getString(key, new Object [] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * + * + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * + * + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * + * + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * + * + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * + * + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + for (PropertySheetPage propertySheetPage : propertySheetPages) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * + * + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/org.eclipse.january.geometry.model.editor/src/org/eclipse/january/geometry/presentation/GeometryEditorPlugin.java b/org.eclipse.january.geometry.model.editor/src/org/eclipse/january/geometry/presentation/GeometryEditorPlugin.java new file mode 100644 index 00000000..f4b3c831 --- /dev/null +++ b/org.eclipse.january.geometry.model.editor/src/org/eclipse/january/geometry/presentation/GeometryEditorPlugin.java @@ -0,0 +1,91 @@ +/** + */ +package org.eclipse.january.geometry.presentation; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.ui.EclipseUIPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Geometry editor plugin. + * + * + * @generated + */ +public final class GeometryEditorPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * + * + * @generated + */ + public static final GeometryEditorPlugin INSTANCE = new GeometryEditorPlugin(); + + /** + * Keep track of the singleton. + * + * + * @generated + */ + private static Implementation plugin; + + /** + * Create the instance. + * + * + * @generated + */ + public GeometryEditorPlugin() { + super + (new ResourceLocator [] { + }); + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * + * + * @return the singleton instance. + * @generated + */ + @Override + public ResourceLocator getPluginResourceLocator() { + return plugin; + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * + * + * @return the singleton instance. + * @generated + */ + public static Implementation getPlugin() { + return plugin; + } + + /** + * The actual implementation of the Eclipse Plugin. + * + * + * @generated + */ + public static class Implementation extends EclipseUIPlugin { + /** + * Creates an instance. + * + * + * @generated + */ + public Implementation() { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/org.eclipse.january.geometry.model.editor/src/org/eclipse/january/geometry/presentation/GeometryModelWizard.java b/org.eclipse.january.geometry.model.editor/src/org/eclipse/january/geometry/presentation/GeometryModelWizard.java new file mode 100644 index 00000000..ea0b453d --- /dev/null +++ b/org.eclipse.january.geometry.model.editor/src/org/eclipse/january/geometry/presentation/GeometryModelWizard.java @@ -0,0 +1,628 @@ +/** + */ +package org.eclipse.january.geometry.presentation; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +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.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import org.eclipse.january.geometry.GeometryFactory; +import org.eclipse.january.geometry.GeometryPackage; +import org.eclipse.january.geometry.provider.GeometryEditPlugin; + + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + + +/** + * This is a simple wizard for creating a new model file. + * + * + * @generated + */ +public class GeometryModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * + * + * @generated + */ + public static final List FILE_EXTENSIONS = + Collections.unmodifiableList(Arrays.asList(GeometryEditorPlugin.INSTANCE.getString("_UI_GeometryEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * + * + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = + GeometryEditorPlugin.INSTANCE.getString("_UI_GeometryEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * + * + * @generated + */ + protected GeometryPackage geometryPackage = GeometryPackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * + * + * @generated + */ + protected GeometryFactory geometryFactory = geometryPackage.getGeometryFactory(); + + /** + * This is the file creation page. + * + * + * @generated + */ + protected GeometryModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * + * + * @generated + */ + protected GeometryModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * + * + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * + * + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * + * + * @generated + */ + protected List initialObjectNames; + + /** + * This just records the information. + * + * + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(GeometryEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(GeometryEditorPlugin.INSTANCE.getImage("full/wizban/NewGeometry"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * + * + * @generated + */ + protected Collection getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList(); + for (EClassifier eClassifier : geometryPackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * + * + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass)geometryPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = geometryFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * + * + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map options = new HashMap(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) { + GeometryEditorPlugin.INSTANCE.log(exception); + } + finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor + (new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), GeometryEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) { + GeometryEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * + * + * @generated + */ + public class GeometryModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * + * + * @generated + */ + public GeometryModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * + * + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(GeometryEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * + * + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * + * + * @generated + */ + public class GeometryModelWizardInitialObjectCreationPage extends WizardPage { + /** + * + * + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * + * + */ + protected List encodings; + + /** + * + * + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * + * + * @generated + */ + public GeometryModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * + * + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); + { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(GeometryEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(GeometryEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * + * + * @generated + */ + protected ModifyListener validator = + new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * + * + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * + * + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * + * + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * + * + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * + * + * @generated + */ + protected String getLabel(String typeName) { + try { + return GeometryEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch(MissingResourceException mre) { + GeometryEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * + * + * @generated + */ + protected Collection getEncodings() { + if (encodings == null) { + encodings = new ArrayList(); + for (StringTokenizer stringTokenizer = new StringTokenizer(GeometryEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * + * + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new GeometryModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(GeometryEditorPlugin.INSTANCE.getString("_UI_GeometryModelWizard_label")); + newFileCreationPage.setDescription(GeometryEditorPlugin.INSTANCE.getString("_UI_GeometryModelWizard_description")); + newFileCreationPage.setFileName(GeometryEditorPlugin.INSTANCE.getString("_UI_GeometryEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = GeometryEditorPlugin.INSTANCE.getString("_UI_GeometryEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new GeometryModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(GeometryEditorPlugin.INSTANCE.getString("_UI_GeometryModelWizard_label")); + initialObjectCreationPage.setDescription(GeometryEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * + * + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/org.eclipse.january.geometry.model.ide/bin/xtext/ide/contentassist/antlr/PartialSTLContentAssistParser.class b/org.eclipse.january.geometry.model.ide/bin/xtext/ide/contentassist/antlr/PartialSTLContentAssistParser.class new file mode 100644 index 0000000000000000000000000000000000000000..f7065496f3765c325a6ff50c184a4b8263489b70 GIT binary patch literal 2340 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 literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ide/bin/xtext/ide/contentassist/antlr/internal/InternalSTLParser.class b/org.eclipse.january.geometry.model.ide/bin/xtext/ide/contentassist/antlr/internal/InternalSTLParser.class new file mode 100644 index 0000000000000000000000000000000000000000..faf50c21c23da5411b8eff2d926c44b4cf2f8148 GIT binary patch literal 44603 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 z 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 NB9{Wc=87i#=HG#|(d7UD literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/.STLUiModule.xtendbin b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/.STLUiModule.xtendbin new file mode 100644 index 0000000000000000000000000000000000000000..61e5f39adb2451d1d7bc6896740e029f564a9fda GIT binary patch literal 1996 zcmaJ?cQ_k(ACH+(lq7bwwK^1SVpXYDjT%90!Fv^{5xYXJCDaI&6SYTUR5k9bvv;^6 ziq@)%akZT})7>D0X#SsA#A%TOmKKcWx zF|5V`%b{2&Y7ANk(R-^C60*`fKZzTk;-6B%PpZm$jRpT@l>Y>MJ+qfJM#Myxos>bu zaS-QhJc5?+)e|4czn6Qj%wiI-#|fEj&!5x8=kqS*>v90KRESb*Y6PJv58nLq32N^Po$=Y z`rY}{VmOgd@tX^x_X~{WyPwr?lAp3x_9SVi`?obhN9}SJs=z2Jczx$FM4?;t+&03d zb*LuMty&YUYc&2->f$<$>O5;p=cuo?WXRX(Si24W678x-zw>734wdE|F^R1TP~225 zQgkh@&uV|SJmtu@U=8mRVR$%oq^gi7JyE4wAlN1TueLKWtA0S%hwP)h%{HC&zoX|{ zRAk`qt+h(8xDijo#m>Zk^)aLxF}HJQj^zO!mr0>XTnu4%2`{InTAO9`{1zoX4Ut&a zCiqgVA`)NjZT;6s;oNUw0$N;{tZl(;x6gjlPy_1FTQ|^i( zvdT`cyT(5*RRh$CFr{2?jmZ?F8+qiS&ZVvCZkN^eEox{C&mRY}$cbbWcV0P0T-s3$ zqT&H-m*xjIx1>5ICMDMuOs>6;ng%zw4?QhqnCK!#--AXU{z|Fzy3;Ud{}HE8qnH6P z#oO4;*&%!32IDutW>3hsHQ(|mg|8zXTI$lzF`xOq7pNsn7YEDjUwT~dhY^7VBBx?@ z?~o&(3s{PH$R2tDz1&|Ajmu^`KxwzGX6JAWpFgsNdJkDY@n4QBs6j7qGNxnqY@y_E{8MigH{kyqHF)^x!GK97)Vxy6>+UyLa^~3H` zh&?2<4emb<4AY_q&45aTSAuvW0)-dzJ2Val);c@*7Dvk0pBu!}AlGb1ZsY_`xK=g9 zx|KUv+vz4wuW*0RJ?-(u;poMsv`Wzl$?;1qf0Bub(K{9ft&m>Gh3zqfj_ClBp8sWtv}84H!YR0H792pZ0Uy;Tc#@a7A@oSZ${2Lk>->dA4NK6y+iUufka_kpKIMNknE{rf;84mo5)A7 z_TB@%L=|;rxYxL9H<3F|fGu2C0L#5&MNdfgdoCcIEOuT}qvmx-`R%3Y zO5GMOUNWPXuRwMXNk)M!N@tWeQqnrU5LXaPH2TTBmq^u26R)sWeZkC!sVGS@$>L5C zrbv8&h4I~V|9fdVG%*vJ`K-#jt}XkpMGM%%S2pUmRdANMNkdYYHv_+K^kXD@i)A3C zSY13Vw8w_bnIbKOY$HT5$%r-Ik!rP_#M+;4>IJC(JQls9b0htL_1FR4yk(9pM-I3J z{C^HOj&L*%=ZnFjkA;tO*h~wrsgKdVcBMkzysTPA>2AMt#dW$`MOfnNT;9v&o@YdQO= z80)t4xxTrpNb@90I@ki0U|-@EhJE1Y@kTLyxNs2frH1CDSR?z`7;*rm5@NXR6mm*Z zO-1c;4XEH1G2C#foER>9_14vzJfilw2|~z|_NJ!2r1qqqJusZ*;oL8!=s5bW?_W_{^@`xqviPfe#FUs`0te`DLIaw of6#hF)PD=2fA4VeUO%2q=lGFGr15d|0RU`AqxQHsk^unlH$8-IF8}}l literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/.gitignore b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/.gitignore new file mode 100644 index 00000000..9fae3f41 --- /dev/null +++ b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/.gitignore @@ -0,0 +1 @@ +/.STLUiModule.java._trace diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/AbstractSTLUiModule.class b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/AbstractSTLUiModule.class new file mode 100644 index 0000000000000000000000000000000000000000..0e53bdc9086712fae2a56abd47d74663d2380634 GIT binary patch literal 11581 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 DToBep literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/STLUiModule.class b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/STLUiModule.class new file mode 100644 index 0000000000000000000000000000000000000000..31e3cf135597c0f213e2c4cba1239749cdca71dc GIT binary patch literal 498 zcma)2O-sW-5PchKtFhWzOTmweH$T8!JXtA}LZJ{v?8kkREOlhNDaoevZ+Q|t_yhb= z;-uADZ|=ab@9mqJxAXD&_7310^%5L``rN9y^)mAM1Aj<&ag=FQLP6kU_0kSfo5;|v zDFlkQWXQGzF3v#1m zXHww!F*BAXs%K`D5_@SI6I*F1Hf-hQ&$ro@i9Ah#Cx1m=myFb1QaVaITx63hv~kkJ zDFm+|KZ1kzz`4Yz1&0GDUR=In>xFL)T+Z%-J!It(b{IF7DwMIyi1pY*g?l)tGIFqw K+JY500KNd@27&Pa literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/STLUiModule.xtend b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/STLUiModule.xtend new file mode 100644 index 00000000..27564fb7 --- /dev/null +++ b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/STLUiModule.xtend @@ -0,0 +1,21 @@ +/******************************************************************************* + * Copyright (c) 2016 UT-Battelle, LLC. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Initial API and implementation and/or initial documentation - + * Kasper Gammeltoft + *******************************************************************************/ +package xtext.ui + +import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor + +/** + * Use this class to register components to be used within the Eclipse IDE. + */ +@FinalFieldsConstructor +class STLUiModule extends AbstractSTLUiModule { +} diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/contentassist/.STLProposalProvider.xtendbin b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/contentassist/.STLProposalProvider.xtendbin new file mode 100644 index 0000000000000000000000000000000000000000..aff5d67906e52fc912db9ce1733dcdeda6830830 GIT binary patch literal 1647 zcmaJ>dpOf;9RD#fW~`ZO^0>rfxg-{%%Um)nZMK!$Q*xP-%f?tPA@@c}&NV zV(w?|_o7mfB$rf5J43mpaGd$;sOOyXdH;Cdf8Ou=em~#O=Yz+BBoF`?3B<>yysxk~QT;+*H*$O0Y{hqd~4LjPg^ z;7vj785vmlsxaF)T>%o-4Y@cNHn4==`Gh;E+FBa6 z$QSr=A4mU#P#bMMhHqkOvV`LM#;~U0iP0o(?xQv%@ZhZEs#iVee8i(gediDup5ROGg(MV!nq1L@?dYZT!ybjau&=xy~JBZj3 zR>Zlgx00{hz)x(ur#4o4mA$QQc>@ss<17s2hu_b!ltD4 zjKt)`wK=GV<2--AFXL3H}P%|jxa9@?$#(7Wj)~JR2LRygH+P&+NnPpuc|7= zWrYjSi<9VG=hs4pSfeR!6$6K&+>(4DC!CXgAfQtL3MZ(OtjY?1wjd}dv)0!1(+^*B zKYb5gf8|K2MQ#BCu*-{qGYcV&mwjtHV#DHh$T2Zsd3^Sm^ zv+T6sC9pPz+dF-wm2axD$5a}^7ZiwN@Eh0#<{?!}tZ5p7X|_Nk?3EGjRzWB5I3W8Z zwqkd(Y^1C#UOJ#s0s=E*nSf_@%~+FixF1Wdl9aegf2yAKROfhB^_N5nYIeVIVJ8MC z<}3oWGH57Bt^FRQbUw2nzaYm`V#vFrjZ1NN?a*X|R<_vfWqZleWg%(Ebj=jN1!-*L zXp~e|(KdY{Ak$=*IT3C9SWz<@l83_V7)fl1bld7)3JmLiKpztI8YeOx9xEn}0R9Q- z?PlEK<7aG->|bwg=XlGk|G-ql{J&ZE*9zPJ_4C^-Q8a9y3?92fa;rW_wCY5Av1qOU F@Hdvmsf+*s literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/contentassist/.gitignore b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/contentassist/.gitignore new file mode 100644 index 00000000..7db0a7b3 --- /dev/null +++ b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/contentassist/.gitignore @@ -0,0 +1 @@ +/.STLProposalProvider.java._trace diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/contentassist/AbstractSTLProposalProvider.class b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/contentassist/AbstractSTLProposalProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..ae89c267af4d94c90de853b9ef52307b1f79ff99 GIT binary patch literal 3366 zcmd6oT~8B16o%geg`debb+SeEQZvpXgA4|(s6 zMlXyv#>5|GJlpM-mJ*uH-f*+qoilTunRm{6`uE?Dp8z(n8Alsott>@ZDkWXfY)cAD zs;;ZMQrS6nrK4&xcbI+S*hSk_4St{NC&Gy%Mo8OEK@pmv7hR$FIW*feZL2xep>Ryy zQVsWVB0}eL-O}YtLiaigR{aIU6jU(03 zz3=K^OrGj4VIv#*WKTu6Z{aMJ?A5xef`M|a#l+5enGoi_? zhOm#`Vf6}@$vR#YWtGK=E^X(M*lAySZ?P*YALUT%_tX9fblVCv-qAEsWYSjZs2fQP z#L-U}t3S`>4fo(K1_|8-A%hzu%r2y^I%TyuGKQ!eHI8AzXmj$nB}1fD!$^QI(t}al zC-ens2SLK;Mxp(U1>u{cBca3O`ZNd=4Vp9;1|i|u$S(xKc*FF|x^o4_E8Z(h!uAzY zLsbo-ORZi#VJ}3s>uQKF6x`Z{M_3B>+*lCEovKBV-)AS~580en!SKSvK{y!8AJ~qm zvW6o~kt5+qUGrAeYQ!57<@~$mq4&*09|*}HX+GE|;df(oHQ&}1BHhH|>vF1YV$rYL zGGU;m!o{W3YZKfB_t)A?U+Fqg^O;w6snT+5w~^1}q@!B}!kyZ>jMt&L-g9=z(ZsIq z_2|iK{ybLB)N?g9#SNjI|Al}){>81HpK<UbsDhQFYijF)1JqaG~D zGbSptlbFO*Ww%K@#56+)GvT3=44sMuoedA2X6Q^L=v;W{97E?LLFdCmQw&{<1YHOZ zU1I2RBxou;RAK09BgEn3dg0>EH4sc<=}Kqr^$^ zm|otSH=mFB`ThC^aDz#Th%nuV-ALYYUb#kWBPIk6lFt{#vv=<nr=j-QLrlo~u{0HaLUY)5k!WI$MgVs(h<~WcrD{4^2eK X6uUBTf&<0THcpfeRS}L9BaHt5F)3Yf literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/contentassist/STLProposalProvider.xtend b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/contentassist/STLProposalProvider.xtend new file mode 100644 index 00000000..29009acb --- /dev/null +++ b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/contentassist/STLProposalProvider.xtend @@ -0,0 +1,20 @@ +/******************************************************************************* + * Copyright (c) 2016 UT-Battelle, LLC. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Initial API and implementation and/or initial documentation - + * Kasper Gammeltoft + *******************************************************************************/ +package xtext.ui.contentassist + + +/** + * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#content-assist + * on how to customize the content assistant. + */ +class STLProposalProvider extends AbstractSTLProposalProvider { +} diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/.STLDescriptionLabelProvider.xtendbin b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/.STLDescriptionLabelProvider.xtendbin new file mode 100644 index 0000000000000000000000000000000000000000..dac48a787d1f16006db697f4a83f168ea79cb5e4 GIT binary patch literal 1841 zcmWIWW@Zs#;Nak3n3jFTg8>Qf0NJUzX}Zbzc_pcNCB;jFee*9n2=tb}RoOb(Evr>v ze%Fze>~FlDhUm451gv5R4ED;qdTi#B=xe*Ly|eQC$^M76PIq^i-O^<%6n-Y0-!s$v z^StNcD$4u+UC~cGURk)dv`WVH@=KGJ85ctwHJ(_^%6xG6_hyZvKl^HbdPpvaowda2 zmE4h8TzwY~e!DcYFO7MT!mHP}MdTWK=D6+O>$o|7!@OBmN}ar#ErPe^AHMb|Zg0b( z4~MoCeSElg%|;KQgNu!g6sOP6ZLBJ2ock?jQVkQ|q+@0wMgF(U*$QN8W$(;j4M}-5 zeeWl`L^o$QwgZQPB_{UFOrDCaZ;|kmRT_7hWw12 zQOKt};Xv|%d0TJB^1KKO7W%J{eB*Y^gijk!hHY%lT5TwL>)?-#ng8=7qrSNwH(2ln>K826VxmD zvYJzcc>>qf!khml=q{c*EpkokAAU3IH+i}5`dRNkoLKy+nlJpU&5BvdinHJHx1P#g z8#?(z;^taDuN0%UuRbq++cqq-wJSaT_3P)?(p?tb4dRd7+}rcl@w^Px>G{4g?BQ0w z8>?%YuD^W5@sAY~-}k`D4oK+q36e+p9@> zFIGtlTw?L-7K?Wt|GBs6S)Vr?_Pw6j#K*8wID_%jOONYP=g+<_ch6Fs$FQ^>XilbGzQT$=qq4u%z;5N8#}(Kx;=l6#EagzVWl0llRMMpo#^DGZ*F0yI4AU$t8DUGpO!Mce}$Fmx|PoB zO!K0nZM1xAYX2ubd-3Zlkty+KJ zX;#_<18K8h2d6Wl3X`~}o4B*yXxvd64)Q%ahrsD|WmkZHtz!i78JR>F5Y-HFVE_sb zRDfLRpzA~qV^Cp%042bX$5wQpn}F;tRJ+50MH6z&1bDNufy`$H!fil070d$w@x&4u literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/.STLLabelProvider.xtendbin b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/.STLLabelProvider.xtendbin new file mode 100644 index 0000000000000000000000000000000000000000..7c4036310ee1ab690656941e7dfa0b69b854cfc7 GIT binary patch literal 2279 zcmaKuc{tSDAIHCg8H1$8zLObsjdAT<6e03G2$j$MfN48nX<2yrG{uM z*%jGJ$YkGT&5{-^KmB#=kuI%-mmkq#ISP+08l6tpn4CYfnRiB ze~kC_K)I2Kfp}sdxyX8yIBI+daoIE$hA*v|W%d;*r^F2M$+8z3L;|4DSO;witia6S zsVLH`(5JG&`7&bk^EJKQWZn9~L?ibRE(7#TUk|-X&C}RPR#F`&r7pQ#m#pvQ(2y|O z-Q5j^weWzglwvkBqRYaoGTMn%-eD4Ckb6dnkrIUy*1MgMGCrS&(`j5*0sG^eg#9@C zM|>|^C=fJXls!~QGWAGGH{oK@n5fJ>WD#;lUnbooXOgDT^;*4uM$4zCZ}JX6Sp?kc zzk6h^dtRtOv6GjBE%fucyFXps;CD2nGcVB=Pk|2i_gDqGHr3n~m3U5($T`$xY%0F_ zBjNzuLXp|@(Nj?Jb1&2NwcHX}GBNmkXK2r!Ou@GkNcB!P>XN-yXE+N0KXlZP(N#wVpSDg=8boBr&c4xisRbW{86*Sufh)!boM^(!2@osy^$8Z=1?}h z;M^DHbkO7vce_*#iD}BR@04H?nXc*|ErtR4-?O$Y;A4w6zxKq=9966(KKKLd<}vXV zQ~UCJ6bRi3%Wb@nQBC04B#b?e;?DN_));~9jE>i3M5~1wt=Cr92ri&lKG+otgD_rp&jD7%$J1?yRohd-qtYz$#4^hk0^V-=b`A4Ll>ngfN`M<4<&G!21rYoK z2_)iE>oXSoh9Xi+!eZ)dj5~+;AhW$nwvDYu<{Xg*>L<;2<^mUebtyrfSs|n20m_@6 z!SAL0cD)i*vOg?Izn^0TZ;!8WqK{SIV8)EISgggX*`C?-zdm)T4nLy!DuDem4k!v7 zxen!llvRiebAv>Xs3?my2jw(mZ9j%P`!S~;up%a!JJ=Z9xIO!Asjgn=>Epa& z!I5XpVyChk=I|j0&jr26m*^=T4X;X-S`)~>8ahw|%kiKly~?v)prCbW%6h9$6t84o z5bBquwImZS7$GHBVOMd=QE@U#vjo|Xr9OR4J)W~Y)O+#fQ zL(%HtW4M}0zZ^rmO^Xqc@ol)J&6P`-E=n5{VFqmRpBsbS!feIsiE3k1(X`yGE9I1;^xSg*r0x}6m;=#WXz!L>G* zl5WCrR`#8i&zk{_G+rM#v?@axJ*xtH{h{SPqTb%Fi$h@;{-yRwA@;`$f#AEkIU;+7Ku<>Ow1`7ep0mM)cyWK>IM_ghIA0D~^Kz zAZ{N}mKYG50Ps(7@GH1}9{lh6wN&``%3m+@C)oZ`*nXVw`@Q%+W&z+oRYcm* literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/.gitignore b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/.gitignore new file mode 100644 index 00000000..200a951a --- /dev/null +++ b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/.gitignore @@ -0,0 +1,2 @@ +/.STLDescriptionLabelProvider.java._trace +/.STLLabelProvider.java._trace diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/STLDescriptionLabelProvider.class b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/STLDescriptionLabelProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..e3d866c13c7ea4904680a5f51ec432a4ff791c7e GIT binary patch literal 384 zcmah_u};H441G?M2120~12b%Z1h+5&>O#d7A*5E_FR3X;N3ObDs{R%e5(6K=Mo@8u62EjQ_2l(7lyP{E*N&J)08ZJ3HeH9qjgypiAiIQt?CcTCkhw z!Z6`5x1}~y?WE-!G4{_=6I8yv{~!A|gludZSMt5IqmTbM_3}k8HBJzmhIb)EY8?hl k15;}bBEMQv(j<6T7x6YFg_X8sw1dP!C0ehun#{d8T literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/STLDescriptionLabelProvider.xtend b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/STLDescriptionLabelProvider.xtend new file mode 100644 index 00000000..2c4c7413 --- /dev/null +++ b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/STLDescriptionLabelProvider.xtend @@ -0,0 +1,32 @@ +/******************************************************************************* + * Copyright (c) 2016 UT-Battelle, LLC. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Initial API and implementation and/or initial documentation - + * Kasper Gammeltoft + *******************************************************************************/ +package xtext.ui.labeling + +import org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider + +/** + * Provides labels for IEObjectDescriptions and IResourceDescriptions. + * + * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#label-provider + */ +class STLDescriptionLabelProvider extends DefaultDescriptionLabelProvider { + + // Labels and icons can be computed like this: + +// override text(IEObjectDescription ele) { +// ele.name.toString +// } +// +// override image(IEObjectDescription ele) { +// ele.EClass.name + '.gif' +// } +} diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/STLLabelProvider.class b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/STLLabelProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..310e7aadb3c3b2d3a602843ad8c4e0a4e0670b7b GIT binary patch literal 723 zcmbtSQA-;^5dQWW6T4Motro04q|%2rf?K3is3j0;0>Wvfk~zX5!}S`C4~)|IC#uL`3w9Z_a%s(Pnk zSo$ZqyEF;qHBN1K0duGd)I($GxEMr~pK7KOSP5OMv%bzviKoGeKR3+%CY&Al zzH8zx^9f~?YR_z~#|Y7s9+W&8|bD=M_!0IIFfTAMputYoJyTEG*p0r$o zKOPqWYK*Fk=Gi{w-QrkK#+utVkk{-5Sm0BRqZ?eciABaQCs|lRol(iLjOWY~V1-eD z7g%Ncvv<@!k@t#}-&s~7o4v-=>B{ZK`^KHzQhg%%eBf`~nItwtxx4picTYAu@*jL& B&hP*L literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/STLLabelProvider.xtend b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/STLLabelProvider.xtend new file mode 100644 index 00000000..d08d7502 --- /dev/null +++ b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/labeling/STLLabelProvider.xtend @@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright (c) 2016 UT-Battelle, LLC. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Initial API and implementation and/or initial documentation - + * Kasper Gammeltoft + *******************************************************************************/ +package xtext.ui.labeling + +import com.google.inject.Inject +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider +import org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider + +/** + * Provides labels for EObjects. + * + * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#label-provider + */ +class STLLabelProvider extends DefaultEObjectLabelProvider { + + @Inject + new(AdapterFactoryLabelProvider delegate) { + super(delegate); + } + + // Labels and icons can be computed like this: + +// def text(Greeting ele) { +// 'A greeting to ' + ele.name +// } +// +// def image(Greeting ele) { +// 'Greeting.gif' +// } +} diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/outline/.STLOutlineTreeProvider.xtendbin b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/outline/.STLOutlineTreeProvider.xtendbin new file mode 100644 index 0000000000000000000000000000000000000000..fddd51f2d1e7cd6a866a55fbaa8766cb4f82e5e7 GIT binary patch literal 1695 zcmWIWW@Zs#;Nak3n3jFTg8>Qf0NJUzX}Zbzc_pcNCB*IYn>>2vj@8i#VYKW{2d1cb+{NvBQ@B7}{ z{x(+;-v0B{+Jw_p#+R*ZIS(IA5_C9{u}VRpNJ`K2!;g=_B2n)&{{QfiTu?h}iPI}a zmswnW7cRcLwv=yr@*)M9m$OCYHSnyxwqm<#alooFU-^kD`kF0*RuKo^U7ef8*;ObKkL(-~N9+zd3PX%UdjJ(jwd2)uGezr5`h3QFt$rIkbt5;YVvgT3yUZtBwb;q6J zCg!&bE-mOT&?|YE+VAgj^^m?>`GaaZ>1nGDdor~*KfK8t^wmm4YE|3C=*Rx|zo;(g zb>E(9B5uIQX~Xp9$->*^n{R%d;$nYNWZv58F}dk{uWvZ@o^9ZIn^==^!+xE2cGQ#H z0=;eX^A~o_n6vopluz}H$~96vn@pxIxWcbw`84=z)%S^pn^{j!x!Cc_`;bxciuSqF z-EtQ!Wy~?@4vv{UU17FCm`+aQHuL3OeVU7ZExY#r-^(@E3vH&lbKWnL-t&B=4r^rE zjRPFh`F4F}nPlkEI%~(Q_%nSQJx}WxU4L@F<&)rd>D2*6ckUmIcpE?0Cv)P3+exAE zJ~g(?_Imk?_8^4H~9VT-I>oe`=`&met%&a@0O`At4}Pw zAhx&1K>7TF(3KBgWSWFU96EBoKN>&Pze#Tds$Qcd-LzdTn@|J zrId6fzfS2i|GRRI{daW;Z*l6x% z``8%hEV$_8XEjBJDKaO{u{xCTHFH>=Eqvql{?PGm`NhJ0<^uoi`$X$`x3RlaUHaGQg6H7zvqAadxnKZT#aFYY0>|^Q(C^flRA8iz0aol zW9rYR>fcr|Ewx<{RoFALtaf$Zs-Hdq+B_VmRw}IUza*qHcdmJ{Ubpe|*fe(8W!YcX zzqi-1{TtI*B(3Lt^pM%(C1>Pf7Byzyb2w>mIr{d5{!1$!J}Zh73|aF+_|BfQ(XVS3 zZxu8PpJ?9Pu>Bni<2uvmv-h;(`I~gK&7LM7v}=Aop?$qLN2&UwUr#pq@A@WviK*?7 z>&*1sYRi@?UtXRPeAjDXwBm|q3*IS4KKddaQkazX`ri#F?@uv{-4rkUsBTzQ&_4M= zRfp{~FRSZM4#n;&44a-;_$+VInfwd;A4kk9-;@&Mw{qsfl>NXY#Ln@v+xL?oFiCB| zo1{R6SYmN;esX3aC?yp~f1cL3bw`Jzf%Zn7!1Y^HjNQ*GZ?rgUzOiBI-)jdCCvl3; zl$>!#Vn@*@;ov($lf6H6+elh?8+8SB8-FSe(&Bm}E8)+Sry#`WOt$3eH0jP$T1V(&B_KcpBV_Z0qM)EARYiF CCCMoO literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/outline/.gitignore b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/outline/.gitignore new file mode 100644 index 00000000..3f4cc3d8 --- /dev/null +++ b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/outline/.gitignore @@ -0,0 +1 @@ +/.STLOutlineTreeProvider.java._trace diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/outline/STLOutlineTreeProvider.class b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/outline/STLOutlineTreeProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..6015930213675ba72d4a9df5ecafbe48cf5dab0f GIT binary patch literal 376 zcmaJ-F;2rk5S(-D7)&6Df`*C;Lcuk3Aeta53y@-^zt{^by5yqEIm)-FkW%mf9)(y3 z-PzTwX7=lQ{R!X-hbbb3vsIu~&^2pU2g@_kqauI&Z3|EI2+%U(!7{M^Cl~y?irEgHwn-c@w0n n#+G0zOm8@lTzp{XT?P>{!DbB{V^6TR=@Y5@!W0e!BlLd&@E>9d literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/outline/STLOutlineTreeProvider.xtend b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/outline/STLOutlineTreeProvider.xtend new file mode 100644 index 00000000..728a03e9 --- /dev/null +++ b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/outline/STLOutlineTreeProvider.xtend @@ -0,0 +1,23 @@ +/******************************************************************************* + * Copyright (c) 2016 UT-Battelle, LLC. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Initial API and implementation and/or initial documentation - + * Kasper Gammeltoft + *******************************************************************************/ +package xtext.ui.outline + +import org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider + +/** + * Customization of the default outline structure. + * + * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#outline + */ +class STLOutlineTreeProvider extends DefaultOutlineTreeProvider { + +} diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/quickfix/.STLQuickfixProvider.xtendbin b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/quickfix/.STLQuickfixProvider.xtendbin new file mode 100644 index 0000000000000000000000000000000000000000..84dc83412556f78034c261a85ee4580548a41918 GIT binary patch literal 1663 zcmaJ>dpr|r7@iq67CUZ-C6vh}lOp%BsSr8lQm(lzv>cnvmO}1wris@BQO@-|u_g=Xo(!{2)mH7z_qv`}bP__5r$g z_6hJsVhQ+QAAB&e#QqAQPfIdj>FP3toTUo`g7Vw@? z^WdN!``ZT#@jV|LgTPO@(>s_x%x2l_L`nerC=J$@x*QX zz&!hiXs7zx6P>ApP;`_9pHN)KPMFr8+4nvrrFe$c4u`1}RC`H&CfQG>pX-B5=Yn7B|si(WsJ01GY`1HFu8jX(^(p}NCH%nsB?WHbxORk!pv-@oB`i$wu3&sRP@z063=Njl4}eKK#UjOMKQhD0&L`1 z>Z_T_Por(JuXW}WEdwZyTh-mjnOo|Wq&yZUZgMHk|7-8(ifulOl@K@*Srn@R1OONy z008r!0+ZYmSdb5qKnlY8Ag}rmu|c@NU>pI@pqwU1pkeV$j~gf*TSS>^hCkj%rIxA# zO3Xzhb(m`)%ACg2mPzaQ<1dJ>NWzFaf&#mM#5C!{v1N~@#W1!?hU=n65Kye-;YN1h zNcu*h->iFBRQ{U#6P{DW`{cOnw`RbG>#} zNrGZ1o&LPYBYZKO0h*v_#M>6@AD}1dvfa`O$#Aazj4vE&Yi@BSfsT@*QJf{}j)={g zh}z4_LuuG81|zioOBG8(t!H|u69}-B$1cjrxZd2vLKh@E*1t4_G=0Kv$4n{9Z68k( z^lzO_P#yBr=&Hl=6Ld2nB*}%`*LaeQclEKoAn4U!#^S;>{RQjs4SO?z%! zK48MQ75bHPSD0!PXp7S{G)4rFCxEG8lV&cEoKbdc7`5)aNe(yRq4!M2#PH{aL3M(z zK-JR_whQjY@70x6^pP`D-^lfhk8T`wg;Swm8^vyhJFK6PbX)=*ewpr(AdRso>aw}! zNNZ4=MP9;D5MNeH(0P^M?GIC!0Ge(-gEOVLvLKX|T;Xu>V~@)-KuW+y2gAtONvk P`T6%&EF?iM6{F literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/quickfix/.gitignore b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/quickfix/.gitignore new file mode 100644 index 00000000..4d1b202a --- /dev/null +++ b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/quickfix/.gitignore @@ -0,0 +1 @@ +/.STLQuickfixProvider.java._trace diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/quickfix/STLQuickfixProvider.class b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/quickfix/STLQuickfixProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..aa749db399ad2ffe0b2d0ee925f548b8dbeae7ca GIT binary patch literal 362 zcmaJ-yH3ME5S(@F7)&6D0?|?+9tGFX5v2i9SqPLU{l&h(g2}<Xj*dr!_`;SZLksI2Bxn=5IZw@Xcp4iw z)Z@w!c5++jYNQ=EdTGY~o@a!^e3jt8;OB&FV1p~n6*nvQ{y6URLC-bzA<5)1kV;J= k!Bmu5XdpRx!`iDD5i-H14eVk=u(RNa)J;)@Ex`!gZ;yCfmjD0& literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/bin/xtext/ui/quickfix/STLQuickfixProvider.xtend b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/quickfix/STLQuickfixProvider.xtend new file mode 100644 index 00000000..f4857268 --- /dev/null +++ b/org.eclipse.january.geometry.model.ui/bin/xtext/ui/quickfix/STLQuickfixProvider.xtend @@ -0,0 +1,32 @@ +/******************************************************************************* + * Copyright (c) 2016 UT-Battelle, LLC. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Initial API and implementation and/or initial documentation - + * Kasper Gammeltoft + *******************************************************************************/ +package xtext.ui.quickfix + +import org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider + +/** + * Custom quickfixes. + * + * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#quick-fixes + */ +class STLQuickfixProvider extends DefaultQuickfixProvider { + +// @Fix(STLValidator.INVALID_NAME) +// def capitalizeName(Issue issue, IssueResolutionAcceptor acceptor) { +// acceptor.accept(issue, 'Capitalize name', 'Capitalize the name.', 'upcase.png') [ +// context | +// val xtextDocument = context.xtextDocument +// val firstLetter = xtextDocument.get(issue.offset, 1) +// xtextDocument.replace(issue.offset, 1, firstLetter.toUpperCase) +// ] +// } +} diff --git a/org.eclipse.january.geometry.model.ui/xtend-gen/xtext/ui/.STLUiModule.java._trace b/org.eclipse.january.geometry.model.ui/xtend-gen/xtext/ui/.STLUiModule.java._trace new file mode 100644 index 0000000000000000000000000000000000000000..d2b189ae153dcb045a7ae141cb786d2836fc106c GIT binary patch literal 227 zcmZQzU|?lrboOGDVPJAY!?N|-*E5}7G+>@y2v9g z4&;905fK5(J{1A+oVi4RJSG$#qtjmpZwV=|NkBINX&4`Bk~0gBgaq6qXE8xA4-k2>`qoE8YMA literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/xtend-gen/xtext/ui/contentassist/.STLProposalProvider.java._trace b/org.eclipse.january.geometry.model.ui/xtend-gen/xtext/ui/contentassist/.STLProposalProvider.java._trace new file mode 100644 index 0000000000000000000000000000000000000000..bfb9161215a011dc657ea08ef207f466dfcddfd3 GIT binary patch literal 174 zcmZQzU|?lrbb8Dv&cNgpe7Ir7$x(PG#g~U}AJKVB%q5bo}h_K|l;<9s@Iw-zOjp=7VTP rr$&b)5s>@?2Pa_>24<(_BBG)|?lTc#knCX@5YL%O2FPPV;V}XL0Fo(N literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/xtend-gen/xtext/ui/labeling/.STLDescriptionLabelProvider.java._trace b/org.eclipse.january.geometry.model.ui/xtend-gen/xtext/ui/labeling/.STLDescriptionLabelProvider.java._trace new file mode 100644 index 0000000000000000000000000000000000000000..72cde63b148329babba5870d94a1bb5f7584a3ae GIT binary patch literal 177 zcmZQzU|?lrbmnK2U|@3UcRVhjz{p@+QIc9wqF7>$}h`INiEU?s?JMcW^|m&$j!jS=w!ge!@%hH%~4W79A+c~v*S01)dC_Q xzQbxkQ3gh*g${Y5KzU~?M;TEC24<(@GGbytu7ivyNcOb?n3tjeu^dO zDDPb2Xd$l7z~am-C?NslRtbs&Wu0YYz`V&aKpqnckI~u2AyZNYD7x9f8%VP_`wB`) z0l9lvfE1&1oHm$uKov+aJEzD%cn}Ji$LQR^36{G9q8Obg2ue!>O?f6E1u`3x$H?UT cN&u*Y*?9sRSmi4a#ppbZ6U_Snp^$lu01M$lod5s; literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.ui/xtend-gen/xtext/ui/outline/.STLOutlineTreeProvider.java._trace b/org.eclipse.january.geometry.model.ui/xtend-gen/xtext/ui/outline/.STLOutlineTreeProvider.java._trace new file mode 100644 index 0000000000000000000000000000000000000000..35f213aead7e3e13308d9ecd0abb5c9f058ab314 GIT binary patch literal 171 zcmZQzU|?lrbo#_7!NBA+-QkLWI3t5@MM-K!iGFFOetv05PG(-JesGA7KZF@ll$sh) zlwX#al3Jt(RF{{+%;-3kk(+^u(aC^`hk?=YpTidcahPEY%s~DG0TD32Ur>~R(W%cN mMHDFStmfbfq?w(zh>M8 @@ -125,12 +138,104 @@ public void setDescription(String newDescription) { * * @generated */ + @Override public Geometry load(Path path) { - // TODO: implement this method - // Ensure that you remove @generated or mark it @generated NOT - throw new UnsupportedOperationException(); + // Geometry to return + Geometry geometry = null; + + + Injector injector = new STLStandaloneSetup().createInjectorAndDoEMFRegistration(); + XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class); + resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL, Boolean.TRUE); + Resource resource = resourceSet.getResource(URI.createFileURI(path.toFile().getAbsolutePath()), true); + + // Check to see if returned contents contain a valid geometry. If not, then the file might be + // a binary format + + // Get the contents of the resource + EList contents = resource.getContents(); + + // If they contents are valid, get the first element + if(contents != null && !contents.isEmpty()) { + Geometry g = (Geometry) contents.get(0); + + // If the geometry has no nodes, or the shape has no triangles, try loading from binary + if (g.getNodes().isEmpty() || ( (Shape)g.getNodes().get(0)).getTriangles().isEmpty()) { + + geometry = loadBinary(path); + } else { + // Otherwise, return this geometry + geometry = g; + } + } + + // Return the geometry + return geometry; + } + + /** + * Loads a binary STL file from the given path into a geometry instance. + * @param path The path to read the file from + * @return Returns the geometry given from the binary file + * @generated NOT + */ + private Geometry loadBinary(Path path){ + // Create a new geometry and add the new shape + Geometry geometry = GeometryFactory.eINSTANCE.createGeometry(); + geometry.setName(path.getFileName().toString()); + Shape shape = GeometryFactory.eINSTANCE.createShape(); + geometry.getNodes().add(shape); + + // Can throw IO exceptions + try { + // Read in the file's bytes, convert to buffer + byte[] fileBytes = Files.readAllBytes(path); + ByteBuffer buffer = ByteBuffer.wrap(fileBytes, 80, fileBytes.length - 80); + buffer.order(ByteOrder.LITTLE_ENDIAN); + + // Get the number of triangles + int triNum = buffer.getInt(); + + // Read in all the triangles + for (int i = 0; i < triNum; i++) { + // Create a triangle + Triangle triangle = GeometryFactory.eINSTANCE.createTriangle(); + + // Create a normal for the triangle + Vertex normal = GeometryFactory.eINSTANCE.createVertex(); + normal.setX(buffer.getFloat()); + normal.setY(buffer.getFloat()); + normal.setZ(buffer.getFloat()); + + triangle.setNormal(normal); + + // Create the triangle vertices + for(int j=0; j<3; j++) { + Vertex vertex = GeometryFactory.eINSTANCE.createVertex(); + vertex.setX(buffer.getFloat()); + vertex.setY(buffer.getFloat()); + vertex.setZ(buffer.getFloat()); + + triangle.getVertices().add(vertex); + } + + // Not used- sometimes gives color information or texture info + int attributeByteCount = buffer.getShort(); + + // Add this triangle to the list + shape.getTriangles().add(triangle); + + } + } catch (IOException e) { + // Put default error data in + + } + + // Return the triangles array list + return geometry; } + /** * * diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/ComplementImpl.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/ComplementImpl.java index 5f1e751c..f8236d69 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/ComplementImpl.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/ComplementImpl.java @@ -27,7 +27,6 @@ protected ComplementImpl() { /** * - * * @generated */ @Override diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/CubeImpl.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/CubeImpl.java index 50ee0e93..cb0c3826 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/CubeImpl.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/CubeImpl.java @@ -22,17 +22,15 @@ * The following features are implemented: *

*
    - *
  • {@link org.eclipse.january.geometry.impl.CubeImpl#getSideLength - * Side Length}
  • + *
  • {@link org.eclipse.january.geometry.impl.CubeImpl#getSideLength Side Length}
  • *
* * @generated */ public class CubeImpl extends ShapeImpl implements Cube { /** - * The default value of the '{@link #getSideLength() Side Length}' - * attribute. - * + * The default value of the '{@link #getSideLength() Side Length}' attribute. + * * @see #getSideLength() * @generated * @ordered @@ -40,9 +38,8 @@ public class CubeImpl extends ShapeImpl implements Cube { protected static final double SIDE_LENGTH_EDEFAULT = 0.0; /** - * The cached value of the '{@link #getSideLength() Side Length}' - * attribute. - * + * The cached value of the '{@link #getSideLength() Side Length}' attribute. + * * @see #getSideLength() * @generated * @ordered @@ -70,7 +67,6 @@ protected CubeImpl() { /** * - * * @generated */ @Override @@ -80,7 +76,6 @@ protected EClass eStaticClass() { /** * - * * @generated */ @Override @@ -110,71 +105,65 @@ public void setSideLength(double newSideLength) { /** * - * * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { - case GeometryPackage.CUBE__SIDE_LENGTH: - return getSideLength(); + case GeometryPackage.CUBE__SIDE_LENGTH: + return getSideLength(); } return super.eGet(featureID, resolve, coreType); } /** * - * * @generated */ @Override public void eSet(int featureID, Object newValue) { switch (featureID) { - case GeometryPackage.CUBE__SIDE_LENGTH: - setSideLength((Double) newValue); - return; + case GeometryPackage.CUBE__SIDE_LENGTH: + setSideLength((Double)newValue); + return; } super.eSet(featureID, newValue); } /** * - * * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { - case GeometryPackage.CUBE__SIDE_LENGTH: - setSideLength(SIDE_LENGTH_EDEFAULT); - return; + case GeometryPackage.CUBE__SIDE_LENGTH: + setSideLength(SIDE_LENGTH_EDEFAULT); + return; } super.eUnset(featureID); } /** * - * * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { - case GeometryPackage.CUBE__SIDE_LENGTH: - return sideLength != SIDE_LENGTH_EDEFAULT; + case GeometryPackage.CUBE__SIDE_LENGTH: + return sideLength != SIDE_LENGTH_EDEFAULT; } return super.eIsSet(featureID); } /** * - * * @generated */ @Override public String toString() { - if (eIsProxy()) - return super.toString(); + if (eIsProxy()) return super.toString(); StringBuffer result = new StringBuffer(super.toString()); result.append(" (sideLength: "); diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/CylinderImpl.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/CylinderImpl.java index 46385500..de0a5de7 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/CylinderImpl.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/CylinderImpl.java @@ -23,19 +23,16 @@ * The following features are implemented: *

*
    - *
  • {@link org.eclipse.january.geometry.impl.CylinderImpl#getRadius - * Radius}
  • - *
  • {@link org.eclipse.january.geometry.impl.CylinderImpl#getHeight - * Height}
  • + *
  • {@link org.eclipse.january.geometry.impl.CylinderImpl#getRadius Radius}
  • + *
  • {@link org.eclipse.january.geometry.impl.CylinderImpl#getHeight Height}
  • *
* * @generated */ public class CylinderImpl extends ShapeImpl implements Cylinder { /** - * The default value of the '{@link #getRadius() Radius}' - * attribute. - * + * The default value of the '{@link #getRadius() Radius}' attribute. + * * @see #getRadius() * @generated * @ordered @@ -45,7 +42,6 @@ public class CylinderImpl extends ShapeImpl implements Cylinder { /** * The cached value of the '{@link #getRadius() Radius}' attribute. * - * * @see #getRadius() * @generated * @ordered @@ -53,9 +49,8 @@ public class CylinderImpl extends ShapeImpl implements Cylinder { protected double radius = RADIUS_EDEFAULT; /** - * The default value of the '{@link #getHeight() Height}' - * attribute. - * + * The default value of the '{@link #getHeight() Height}' attribute. + * * @see #getHeight() * @generated * @ordered @@ -65,7 +60,6 @@ public class CylinderImpl extends ShapeImpl implements Cylinder { /** * The cached value of the '{@link #getHeight() Height}' attribute. * - * * @see #getHeight() * @generated * @ordered @@ -103,20 +97,14 @@ public class CylinderImpl extends ShapeImpl implements Cylinder { /** * - * * @generated */ protected CylinderImpl() { super(); - - // Populate the properties map - properties.put("height", height); - properties.put("radius", radius); } /** * - * * @generated */ @Override @@ -126,7 +114,6 @@ protected EClass eStaticClass() { /** * - * * @generated */ @Override @@ -155,7 +142,6 @@ public void setRadius(double newRadius) { /** * - * * @generated */ @Override @@ -184,81 +170,75 @@ public void setHeight(double newHeight) { /** * - * * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { - case GeometryPackage.CYLINDER__RADIUS: - return getRadius(); - case GeometryPackage.CYLINDER__HEIGHT: - return getHeight(); + case GeometryPackage.CYLINDER__RADIUS: + return getRadius(); + case GeometryPackage.CYLINDER__HEIGHT: + return getHeight(); } return super.eGet(featureID, resolve, coreType); } /** * - * * @generated */ @Override public void eSet(int featureID, Object newValue) { switch (featureID) { - case GeometryPackage.CYLINDER__RADIUS: - setRadius((Double) newValue); - return; - case GeometryPackage.CYLINDER__HEIGHT: - setHeight((Double) newValue); - return; + case GeometryPackage.CYLINDER__RADIUS: + setRadius((Double)newValue); + return; + case GeometryPackage.CYLINDER__HEIGHT: + setHeight((Double)newValue); + return; } super.eSet(featureID, newValue); } /** * - * * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { - case GeometryPackage.CYLINDER__RADIUS: - setRadius(RADIUS_EDEFAULT); - return; - case GeometryPackage.CYLINDER__HEIGHT: - setHeight(HEIGHT_EDEFAULT); - return; + case GeometryPackage.CYLINDER__RADIUS: + setRadius(RADIUS_EDEFAULT); + return; + case GeometryPackage.CYLINDER__HEIGHT: + setHeight(HEIGHT_EDEFAULT); + return; } super.eUnset(featureID); } /** * - * * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { - case GeometryPackage.CYLINDER__RADIUS: - return radius != RADIUS_EDEFAULT; - case GeometryPackage.CYLINDER__HEIGHT: - return height != HEIGHT_EDEFAULT; + case GeometryPackage.CYLINDER__RADIUS: + return radius != RADIUS_EDEFAULT; + case GeometryPackage.CYLINDER__HEIGHT: + return height != HEIGHT_EDEFAULT; } return super.eIsSet(featureID); } /** * - * * @generated */ @Override public String toString() { - if (eIsProxy()) - return super.toString(); + if (eIsProxy()) return super.toString(); StringBuffer result = new StringBuffer(super.toString()); result.append(" (radius: "); diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/GeometryImpl.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/GeometryImpl.java index ca061dd8..49db3f71 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/GeometryImpl.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/GeometryImpl.java @@ -28,20 +28,13 @@ * The following features are implemented: *

*
    - *
  • {@link org.eclipse.january.geometry.impl.GeometryImpl#getName - * Name}
  • - *
  • {@link org.eclipse.january.geometry.impl.GeometryImpl#getId Id} - *
  • - *
  • {@link org.eclipse.january.geometry.impl.GeometryImpl#getNodes - * Nodes}
  • - *
  • {@link org.eclipse.january.geometry.impl.GeometryImpl#getType - * Type}
  • - *
  • {@link org.eclipse.january.geometry.impl.GeometryImpl#getTriangles - * Triangles}
  • - *
  • {@link org.eclipse.january.geometry.impl.GeometryImpl#getCenter - * Center}
  • - *
  • {@link org.eclipse.january.geometry.impl.GeometryImpl#getParent - * Parent}
  • + *
  • {@link org.eclipse.january.geometry.impl.GeometryImpl#getName Name}
  • + *
  • {@link org.eclipse.january.geometry.impl.GeometryImpl#getId Id}
  • + *
  • {@link org.eclipse.january.geometry.impl.GeometryImpl#getNodes Nodes}
  • + *
  • {@link org.eclipse.january.geometry.impl.GeometryImpl#getType Type}
  • + *
  • {@link org.eclipse.january.geometry.impl.GeometryImpl#getTriangles Triangles}
  • + *
  • {@link org.eclipse.january.geometry.impl.GeometryImpl#getCenter Center}
  • + *
  • {@link org.eclipse.january.geometry.impl.GeometryImpl#getParent Parent}
  • *
* * @generated @@ -51,7 +44,6 @@ public class GeometryImpl extends MinimalEObjectImpl.Container /** * The default value of the '{@link #getName() Name}' attribute. * - * * @see #getName() * @generated * @ordered @@ -61,7 +53,6 @@ public class GeometryImpl extends MinimalEObjectImpl.Container /** * The cached value of the '{@link #getName() Name}' attribute. * - * * @see #getName() * @generated * @ordered @@ -89,9 +80,8 @@ public class GeometryImpl extends MinimalEObjectImpl.Container protected long id = ID_EDEFAULT; /** - * The cached value of the '{@link #getNodes() Nodes}' containment - * reference list. - * + * The cached value of the '{@link #getNodes() Nodes}' containment reference list. + * * @see #getNodes() * @generated * @ordered @@ -101,7 +91,6 @@ public class GeometryImpl extends MinimalEObjectImpl.Container /** * The default value of the '{@link #getType() Type}' attribute. * - * * @see #getType() * @generated * @ordered @@ -111,7 +100,6 @@ public class GeometryImpl extends MinimalEObjectImpl.Container /** * The cached value of the '{@link #getType() Type}' attribute. * - * * @see #getType() * @generated * @ordered @@ -119,9 +107,8 @@ public class GeometryImpl extends MinimalEObjectImpl.Container protected String type = TYPE_EDEFAULT; /** - * The cached value of the '{@link #getTriangles() Triangles}' - * containment reference list. - * + * The cached value of the '{@link #getTriangles() Triangles}' containment reference list. + * * @see #getTriangles() * @generated * @ordered @@ -131,7 +118,6 @@ public class GeometryImpl extends MinimalEObjectImpl.Container /** * The cached value of the '{@link #getCenter() Center}' reference. * - * * @see #getCenter() * @generated * @ordered @@ -141,7 +127,6 @@ public class GeometryImpl extends MinimalEObjectImpl.Container /** * The cached value of the '{@link #getParent() Parent}' reference. * - * * @see #getParent() * @generated * @ordered @@ -150,7 +135,6 @@ public class GeometryImpl extends MinimalEObjectImpl.Container /** * - * * @generated */ protected GeometryImpl() { @@ -159,7 +143,6 @@ protected GeometryImpl() { /** * - * * @generated */ @Override @@ -169,7 +152,6 @@ protected EClass eStaticClass() { /** * - * * @generated */ @Override @@ -179,7 +161,6 @@ public String getName() { /** * - * * @generated */ @Override @@ -187,13 +168,11 @@ public void setName(String newName) { String oldName = name; name = newName; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.GEOMETRY__NAME, oldName, name)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.GEOMETRY__NAME, oldName, name)); } /** * - * * @generated */ @Override @@ -203,7 +182,6 @@ public long getId() { /** * - * * @generated */ @Override @@ -211,27 +189,23 @@ public void setId(long newId) { long oldId = id; id = newId; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.GEOMETRY__ID, oldId, id)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.GEOMETRY__ID, oldId, id)); } /** * - * * @generated */ @Override public EList getNodes() { if (nodes == null) { - nodes = new EObjectContainmentEList(INode.class, this, - GeometryPackage.GEOMETRY__NODES); + nodes = new EObjectContainmentEList(INode.class, this, GeometryPackage.GEOMETRY__NODES); } return nodes; } /** * - * * @generated */ @Override @@ -241,7 +215,6 @@ public String getType() { /** * - * * @generated */ @Override @@ -249,39 +222,33 @@ public void setType(String newType) { String oldType = type; type = newType; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.GEOMETRY__TYPE, oldType, type)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.GEOMETRY__TYPE, oldType, type)); } /** * - * * @generated */ @Override public EList getTriangles() { if (triangles == null) { - triangles = new EObjectContainmentEList(Triangle.class, - this, GeometryPackage.GEOMETRY__TRIANGLES); + triangles = new EObjectContainmentEList(Triangle.class, this, GeometryPackage.GEOMETRY__TRIANGLES); } return triangles; } /** * - * * @generated */ @Override public Vertex getCenter() { if (center != null && center.eIsProxy()) { - InternalEObject oldCenter = (InternalEObject) center; - center = (Vertex) eResolveProxy(oldCenter); + InternalEObject oldCenter = (InternalEObject)center; + center = (Vertex)eResolveProxy(oldCenter); if (center != oldCenter) { if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.RESOLVE, - GeometryPackage.GEOMETRY__CENTER, oldCenter, - center)); + eNotify(new ENotificationImpl(this, Notification.RESOLVE, GeometryPackage.GEOMETRY__CENTER, oldCenter, center)); } } return center; @@ -289,7 +256,6 @@ public Vertex getCenter() { /** * - * * @generated */ public Vertex basicGetCenter() { @@ -298,7 +264,6 @@ public Vertex basicGetCenter() { /** * - * * @generated */ @Override @@ -306,25 +271,21 @@ public void setCenter(Vertex newCenter) { Vertex oldCenter = center; center = newCenter; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.GEOMETRY__CENTER, oldCenter, center)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.GEOMETRY__CENTER, oldCenter, center)); } /** * - * * @generated */ @Override public INode getParent() { if (parent != null && parent.eIsProxy()) { - InternalEObject oldParent = (InternalEObject) parent; - parent = (INode) eResolveProxy(oldParent); + InternalEObject oldParent = (InternalEObject)parent; + parent = (INode)eResolveProxy(oldParent); if (parent != oldParent) { if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.RESOLVE, - GeometryPackage.GEOMETRY__PARENT, oldParent, - parent)); + eNotify(new ENotificationImpl(this, Notification.RESOLVE, GeometryPackage.GEOMETRY__PARENT, oldParent, parent)); } } return parent; @@ -332,7 +293,6 @@ public INode getParent() { /** * - * * @generated */ public INode basicGetParent() { @@ -341,7 +301,6 @@ public INode basicGetParent() { /** * - * * @generated */ @Override @@ -349,13 +308,11 @@ public void setParent(INode newParent) { INode oldParent = parent; parent = newParent; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.GEOMETRY__PARENT, oldParent, parent)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.GEOMETRY__PARENT, oldParent, parent)); } /** * - * * @generated */ @Override @@ -367,38 +324,30 @@ public void changeDecoratorProperty(String property, Object value) { /** * - * * @generated */ @Override public EList getPropertyNames() { - // TODO: implement this method - // Ensure that you remove @generated or mark it @generated NOT - throw new UnsupportedOperationException(); + //Return a list of the properties' keys. + return new BasicEList(properties.keySet()); } /** * - * * @generated */ @Override public double getProperty(final String property) { - // TODO: implement this method - // Ensure that you remove @generated or mark it @generated NOT - throw new UnsupportedOperationException(); + return properties.get(property); } /** * - * * @generated */ @Override public void setProperty(final String property, final double value) { - // TODO: implement this method - // Ensure that you remove @generated or mark it @generated NOT - throw new UnsupportedOperationException(); + properties.put(property, value); } /** @@ -480,193 +429,179 @@ public Object clone() { /** * - * * @generated */ @Override public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { - case GeometryPackage.GEOMETRY__NODES: - return ((InternalEList) getNodes()).basicRemove(otherEnd, msgs); - case GeometryPackage.GEOMETRY__TRIANGLES: - return ((InternalEList) getTriangles()).basicRemove(otherEnd, - msgs); + case GeometryPackage.GEOMETRY__NODES: + return ((InternalEList)getNodes()).basicRemove(otherEnd, msgs); + case GeometryPackage.GEOMETRY__TRIANGLES: + return ((InternalEList)getTriangles()).basicRemove(otherEnd, msgs); } return super.eInverseRemove(otherEnd, featureID, msgs); } /** * - * * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { - case GeometryPackage.GEOMETRY__NAME: - return getName(); - case GeometryPackage.GEOMETRY__ID: - return getId(); - case GeometryPackage.GEOMETRY__NODES: - return getNodes(); - case GeometryPackage.GEOMETRY__TYPE: - return getType(); - case GeometryPackage.GEOMETRY__TRIANGLES: - return getTriangles(); - case GeometryPackage.GEOMETRY__CENTER: - if (resolve) - return getCenter(); - return basicGetCenter(); - case GeometryPackage.GEOMETRY__PARENT: - if (resolve) - return getParent(); - return basicGetParent(); + case GeometryPackage.GEOMETRY__NAME: + return getName(); + case GeometryPackage.GEOMETRY__ID: + return getId(); + case GeometryPackage.GEOMETRY__NODES: + return getNodes(); + case GeometryPackage.GEOMETRY__TYPE: + return getType(); + case GeometryPackage.GEOMETRY__TRIANGLES: + return getTriangles(); + case GeometryPackage.GEOMETRY__CENTER: + if (resolve) return getCenter(); + return basicGetCenter(); + case GeometryPackage.GEOMETRY__PARENT: + if (resolve) return getParent(); + return basicGetParent(); } return super.eGet(featureID, resolve, coreType); } /** * - * * @generated */ @SuppressWarnings("unchecked") @Override public void eSet(int featureID, Object newValue) { switch (featureID) { - case GeometryPackage.GEOMETRY__NAME: - setName((String) newValue); - return; - case GeometryPackage.GEOMETRY__ID: - setId((Long) newValue); - return; - case GeometryPackage.GEOMETRY__NODES: - getNodes().clear(); - getNodes().addAll((Collection) newValue); - return; - case GeometryPackage.GEOMETRY__TYPE: - setType((String) newValue); - return; - case GeometryPackage.GEOMETRY__TRIANGLES: - getTriangles().clear(); - getTriangles().addAll((Collection) newValue); - return; - case GeometryPackage.GEOMETRY__CENTER: - setCenter((Vertex) newValue); - return; - case GeometryPackage.GEOMETRY__PARENT: - setParent((INode) newValue); - return; + case GeometryPackage.GEOMETRY__NAME: + setName((String)newValue); + return; + case GeometryPackage.GEOMETRY__ID: + setId((Long)newValue); + return; + case GeometryPackage.GEOMETRY__NODES: + getNodes().clear(); + getNodes().addAll((Collection)newValue); + return; + case GeometryPackage.GEOMETRY__TYPE: + setType((String)newValue); + return; + case GeometryPackage.GEOMETRY__TRIANGLES: + getTriangles().clear(); + getTriangles().addAll((Collection)newValue); + return; + case GeometryPackage.GEOMETRY__CENTER: + setCenter((Vertex)newValue); + return; + case GeometryPackage.GEOMETRY__PARENT: + setParent((INode)newValue); + return; } super.eSet(featureID, newValue); } /** * - * * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { - case GeometryPackage.GEOMETRY__NAME: - setName(NAME_EDEFAULT); - return; - case GeometryPackage.GEOMETRY__ID: - setId(ID_EDEFAULT); - return; - case GeometryPackage.GEOMETRY__NODES: - getNodes().clear(); - return; - case GeometryPackage.GEOMETRY__TYPE: - setType(TYPE_EDEFAULT); - return; - case GeometryPackage.GEOMETRY__TRIANGLES: - getTriangles().clear(); - return; - case GeometryPackage.GEOMETRY__CENTER: - setCenter((Vertex) null); - return; - case GeometryPackage.GEOMETRY__PARENT: - setParent((INode) null); - return; + case GeometryPackage.GEOMETRY__NAME: + setName(NAME_EDEFAULT); + return; + case GeometryPackage.GEOMETRY__ID: + setId(ID_EDEFAULT); + return; + case GeometryPackage.GEOMETRY__NODES: + getNodes().clear(); + return; + case GeometryPackage.GEOMETRY__TYPE: + setType(TYPE_EDEFAULT); + return; + case GeometryPackage.GEOMETRY__TRIANGLES: + getTriangles().clear(); + return; + case GeometryPackage.GEOMETRY__CENTER: + setCenter((Vertex)null); + return; + case GeometryPackage.GEOMETRY__PARENT: + setParent((INode)null); + return; } super.eUnset(featureID); } /** * - * * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { - case GeometryPackage.GEOMETRY__NAME: - return NAME_EDEFAULT == null ? name != null - : !NAME_EDEFAULT.equals(name); - case GeometryPackage.GEOMETRY__ID: - return id != ID_EDEFAULT; - case GeometryPackage.GEOMETRY__NODES: - return nodes != null && !nodes.isEmpty(); - case GeometryPackage.GEOMETRY__TYPE: - return TYPE_EDEFAULT == null ? type != null - : !TYPE_EDEFAULT.equals(type); - case GeometryPackage.GEOMETRY__TRIANGLES: - return triangles != null && !triangles.isEmpty(); - case GeometryPackage.GEOMETRY__CENTER: - return center != null; - case GeometryPackage.GEOMETRY__PARENT: - return parent != null; + case GeometryPackage.GEOMETRY__NAME: + return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); + case GeometryPackage.GEOMETRY__ID: + return id != ID_EDEFAULT; + case GeometryPackage.GEOMETRY__NODES: + return nodes != null && !nodes.isEmpty(); + case GeometryPackage.GEOMETRY__TYPE: + return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type); + case GeometryPackage.GEOMETRY__TRIANGLES: + return triangles != null && !triangles.isEmpty(); + case GeometryPackage.GEOMETRY__CENTER: + return center != null; + case GeometryPackage.GEOMETRY__PARENT: + return parent != null; } return super.eIsSet(featureID); } /** * - * * @generated */ @Override public Object eInvoke(int operationID, EList arguments) throws InvocationTargetException { switch (operationID) { - case GeometryPackage.GEOMETRY___CHANGE_DECORATOR_PROPERTY__STRING_OBJECT: - changeDecoratorProperty((String) arguments.get(0), - arguments.get(1)); - return null; - case GeometryPackage.GEOMETRY___GET_PROPERTY_NAMES: - return getPropertyNames(); - case GeometryPackage.GEOMETRY___GET_PROPERTY__STRING: - return getProperty((String) arguments.get(0)); - case GeometryPackage.GEOMETRY___SET_PROPERTY__STRING_DOUBLE: - setProperty((String) arguments.get(0), (Double) arguments.get(1)); - return null; - case GeometryPackage.GEOMETRY___ADD_NODE__INODE: - addNode((INode) arguments.get(0)); - return null; - case GeometryPackage.GEOMETRY___REMOVE_NODE__INODE: - removeNode((INode) arguments.get(0)); - return null; - case GeometryPackage.GEOMETRY___COPY__OBJECT: - copy(arguments.get(0)); - return null; - case GeometryPackage.GEOMETRY___CLONE: - return clone(); + case GeometryPackage.GEOMETRY___CHANGE_DECORATOR_PROPERTY__STRING_OBJECT: + changeDecoratorProperty((String)arguments.get(0), arguments.get(1)); + return null; + case GeometryPackage.GEOMETRY___GET_PROPERTY_NAMES: + return getPropertyNames(); + case GeometryPackage.GEOMETRY___GET_PROPERTY__STRING: + return getProperty((String)arguments.get(0)); + case GeometryPackage.GEOMETRY___SET_PROPERTY__STRING_DOUBLE: + setProperty((String)arguments.get(0), (Double)arguments.get(1)); + return null; + case GeometryPackage.GEOMETRY___ADD_NODE__INODE: + addNode((INode)arguments.get(0)); + return null; + case GeometryPackage.GEOMETRY___REMOVE_NODE__INODE: + removeNode((INode)arguments.get(0)); + return null; + case GeometryPackage.GEOMETRY___COPY__OBJECT: + copy(arguments.get(0)); + return null; + case GeometryPackage.GEOMETRY___CLONE: + return clone(); } return super.eInvoke(operationID, arguments); } /** * - * * @generated */ @Override public String toString() { - if (eIsProxy()) - return super.toString(); + if (eIsProxy()) return super.toString(); StringBuffer result = new StringBuffer(super.toString()); result.append(" (name: "); diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/IntersectionImpl.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/IntersectionImpl.java index e81e7545..2d08f4d5 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/IntersectionImpl.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/IntersectionImpl.java @@ -27,7 +27,6 @@ protected IntersectionImpl() { /** * - * * @generated */ @Override diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/OperatorImpl.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/OperatorImpl.java index f94c324c..8de8a66e 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/OperatorImpl.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/OperatorImpl.java @@ -30,20 +30,13 @@ * The following features are implemented: *

*
    - *
  • {@link org.eclipse.january.geometry.impl.OperatorImpl#getName - * Name}
  • - *
  • {@link org.eclipse.january.geometry.impl.OperatorImpl#getId Id} - *
  • - *
  • {@link org.eclipse.january.geometry.impl.OperatorImpl#getNodes - * Nodes}
  • - *
  • {@link org.eclipse.january.geometry.impl.OperatorImpl#getType - * Type}
  • - *
  • {@link org.eclipse.january.geometry.impl.OperatorImpl#getTriangles - * Triangles}
  • - *
  • {@link org.eclipse.january.geometry.impl.OperatorImpl#getCenter - * Center}
  • - *
  • {@link org.eclipse.january.geometry.impl.OperatorImpl#getParent - * Parent}
  • + *
  • {@link org.eclipse.january.geometry.impl.OperatorImpl#getName Name}
  • + *
  • {@link org.eclipse.january.geometry.impl.OperatorImpl#getId Id}
  • + *
  • {@link org.eclipse.january.geometry.impl.OperatorImpl#getNodes Nodes}
  • + *
  • {@link org.eclipse.january.geometry.impl.OperatorImpl#getType Type}
  • + *
  • {@link org.eclipse.january.geometry.impl.OperatorImpl#getTriangles Triangles}
  • + *
  • {@link org.eclipse.january.geometry.impl.OperatorImpl#getCenter Center}
  • + *
  • {@link org.eclipse.january.geometry.impl.OperatorImpl#getParent Parent}
  • *
* * @generated @@ -53,7 +46,6 @@ public class OperatorImpl extends MinimalEObjectImpl.Container /** * The default value of the '{@link #getName() Name}' attribute. * - * * @see #getName() * @generated * @ordered @@ -63,7 +55,6 @@ public class OperatorImpl extends MinimalEObjectImpl.Container /** * The cached value of the '{@link #getName() Name}' attribute. * - * * @see #getName() * @generated * @ordered @@ -91,9 +82,8 @@ public class OperatorImpl extends MinimalEObjectImpl.Container protected long id = ID_EDEFAULT; /** - * The cached value of the '{@link #getNodes() Nodes}' containment - * reference list. - * + * The cached value of the '{@link #getNodes() Nodes}' containment reference list. + * * @see #getNodes() * @generated * @ordered @@ -103,7 +93,6 @@ public class OperatorImpl extends MinimalEObjectImpl.Container /** * The default value of the '{@link #getType() Type}' attribute. * - * * @see #getType() * @generated * @ordered @@ -113,7 +102,6 @@ public class OperatorImpl extends MinimalEObjectImpl.Container /** * The cached value of the '{@link #getType() Type}' attribute. * - * * @see #getType() * @generated * @ordered @@ -121,9 +109,8 @@ public class OperatorImpl extends MinimalEObjectImpl.Container protected String type = TYPE_EDEFAULT; /** - * The cached value of the '{@link #getTriangles() Triangles}' - * containment reference list. - * + * The cached value of the '{@link #getTriangles() Triangles}' containment reference list. + * * @see #getTriangles() * @generated * @ordered @@ -133,7 +120,6 @@ public class OperatorImpl extends MinimalEObjectImpl.Container /** * The cached value of the '{@link #getCenter() Center}' reference. * - * * @see #getCenter() * @generated * @ordered @@ -143,7 +129,6 @@ public class OperatorImpl extends MinimalEObjectImpl.Container /** * The cached value of the '{@link #getParent() Parent}' reference. * - * * @see #getParent() * @generated * @ordered @@ -173,7 +158,6 @@ protected OperatorImpl() { /** * - * * @generated */ @Override @@ -183,7 +167,6 @@ protected EClass eStaticClass() { /** * - * * @generated */ @Override @@ -193,7 +176,6 @@ public String getName() { /** * - * * @generated */ @Override @@ -201,13 +183,11 @@ public void setName(String newName) { String oldName = name; name = newName; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.OPERATOR__NAME, oldName, name)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.OPERATOR__NAME, oldName, name)); } /** * - * * @generated */ @Override @@ -217,7 +197,6 @@ public long getId() { /** * - * * @generated */ @Override @@ -225,27 +204,23 @@ public void setId(long newId) { long oldId = id; id = newId; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.OPERATOR__ID, oldId, id)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.OPERATOR__ID, oldId, id)); } /** * - * * @generated */ @Override public EList getNodes() { if (nodes == null) { - nodes = new EObjectContainmentEList(INode.class, this, - GeometryPackage.OPERATOR__NODES); + nodes = new EObjectContainmentEList(INode.class, this, GeometryPackage.OPERATOR__NODES); } return nodes; } /** * - * * @generated */ @Override @@ -255,7 +230,6 @@ public String getType() { /** * - * * @generated */ @Override @@ -263,39 +237,33 @@ public void setType(String newType) { String oldType = type; type = newType; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.OPERATOR__TYPE, oldType, type)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.OPERATOR__TYPE, oldType, type)); } /** * - * * @generated */ @Override public EList getTriangles() { if (triangles == null) { - triangles = new EObjectContainmentEList(Triangle.class, - this, GeometryPackage.OPERATOR__TRIANGLES); + triangles = new EObjectContainmentEList(Triangle.class, this, GeometryPackage.OPERATOR__TRIANGLES); } return triangles; } /** * - * * @generated */ @Override public Vertex getCenter() { if (center != null && center.eIsProxy()) { - InternalEObject oldCenter = (InternalEObject) center; - center = (Vertex) eResolveProxy(oldCenter); + InternalEObject oldCenter = (InternalEObject)center; + center = (Vertex)eResolveProxy(oldCenter); if (center != oldCenter) { if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.RESOLVE, - GeometryPackage.OPERATOR__CENTER, oldCenter, - center)); + eNotify(new ENotificationImpl(this, Notification.RESOLVE, GeometryPackage.OPERATOR__CENTER, oldCenter, center)); } } return center; @@ -303,7 +271,6 @@ public Vertex getCenter() { /** * - * * @generated */ public Vertex basicGetCenter() { @@ -312,7 +279,6 @@ public Vertex basicGetCenter() { /** * - * * @generated */ @Override @@ -320,25 +286,21 @@ public void setCenter(Vertex newCenter) { Vertex oldCenter = center; center = newCenter; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.OPERATOR__CENTER, oldCenter, center)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.OPERATOR__CENTER, oldCenter, center)); } /** * - * * @generated */ @Override public INode getParent() { if (parent != null && parent.eIsProxy()) { - InternalEObject oldParent = (InternalEObject) parent; - parent = (INode) eResolveProxy(oldParent); + InternalEObject oldParent = (InternalEObject)parent; + parent = (INode)eResolveProxy(oldParent); if (parent != oldParent) { if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.RESOLVE, - GeometryPackage.OPERATOR__PARENT, oldParent, - parent)); + eNotify(new ENotificationImpl(this, Notification.RESOLVE, GeometryPackage.OPERATOR__PARENT, oldParent, parent)); } } return parent; @@ -346,7 +308,6 @@ public INode getParent() { /** * - * * @generated */ public INode basicGetParent() { @@ -355,7 +316,6 @@ public INode basicGetParent() { /** * - * * @generated */ @Override @@ -363,13 +323,11 @@ public void setParent(INode newParent) { INode oldParent = parent; parent = newParent; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.OPERATOR__PARENT, oldParent, parent)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.OPERATOR__PARENT, oldParent, parent)); } /** * - * * @generated */ @Override @@ -536,193 +494,179 @@ public Object clone() { /** * - * * @generated */ @Override public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { - case GeometryPackage.OPERATOR__NODES: - return ((InternalEList) getNodes()).basicRemove(otherEnd, msgs); - case GeometryPackage.OPERATOR__TRIANGLES: - return ((InternalEList) getTriangles()).basicRemove(otherEnd, - msgs); + case GeometryPackage.OPERATOR__NODES: + return ((InternalEList)getNodes()).basicRemove(otherEnd, msgs); + case GeometryPackage.OPERATOR__TRIANGLES: + return ((InternalEList)getTriangles()).basicRemove(otherEnd, msgs); } return super.eInverseRemove(otherEnd, featureID, msgs); } /** * - * * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { - case GeometryPackage.OPERATOR__NAME: - return getName(); - case GeometryPackage.OPERATOR__ID: - return getId(); - case GeometryPackage.OPERATOR__NODES: - return getNodes(); - case GeometryPackage.OPERATOR__TYPE: - return getType(); - case GeometryPackage.OPERATOR__TRIANGLES: - return getTriangles(); - case GeometryPackage.OPERATOR__CENTER: - if (resolve) - return getCenter(); - return basicGetCenter(); - case GeometryPackage.OPERATOR__PARENT: - if (resolve) - return getParent(); - return basicGetParent(); + case GeometryPackage.OPERATOR__NAME: + return getName(); + case GeometryPackage.OPERATOR__ID: + return getId(); + case GeometryPackage.OPERATOR__NODES: + return getNodes(); + case GeometryPackage.OPERATOR__TYPE: + return getType(); + case GeometryPackage.OPERATOR__TRIANGLES: + return getTriangles(); + case GeometryPackage.OPERATOR__CENTER: + if (resolve) return getCenter(); + return basicGetCenter(); + case GeometryPackage.OPERATOR__PARENT: + if (resolve) return getParent(); + return basicGetParent(); } return super.eGet(featureID, resolve, coreType); } /** * - * * @generated */ @SuppressWarnings("unchecked") @Override public void eSet(int featureID, Object newValue) { switch (featureID) { - case GeometryPackage.OPERATOR__NAME: - setName((String) newValue); - return; - case GeometryPackage.OPERATOR__ID: - setId((Long) newValue); - return; - case GeometryPackage.OPERATOR__NODES: - getNodes().clear(); - getNodes().addAll((Collection) newValue); - return; - case GeometryPackage.OPERATOR__TYPE: - setType((String) newValue); - return; - case GeometryPackage.OPERATOR__TRIANGLES: - getTriangles().clear(); - getTriangles().addAll((Collection) newValue); - return; - case GeometryPackage.OPERATOR__CENTER: - setCenter((Vertex) newValue); - return; - case GeometryPackage.OPERATOR__PARENT: - setParent((INode) newValue); - return; + case GeometryPackage.OPERATOR__NAME: + setName((String)newValue); + return; + case GeometryPackage.OPERATOR__ID: + setId((Long)newValue); + return; + case GeometryPackage.OPERATOR__NODES: + getNodes().clear(); + getNodes().addAll((Collection)newValue); + return; + case GeometryPackage.OPERATOR__TYPE: + setType((String)newValue); + return; + case GeometryPackage.OPERATOR__TRIANGLES: + getTriangles().clear(); + getTriangles().addAll((Collection)newValue); + return; + case GeometryPackage.OPERATOR__CENTER: + setCenter((Vertex)newValue); + return; + case GeometryPackage.OPERATOR__PARENT: + setParent((INode)newValue); + return; } super.eSet(featureID, newValue); } /** * - * * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { - case GeometryPackage.OPERATOR__NAME: - setName(NAME_EDEFAULT); - return; - case GeometryPackage.OPERATOR__ID: - setId(ID_EDEFAULT); - return; - case GeometryPackage.OPERATOR__NODES: - getNodes().clear(); - return; - case GeometryPackage.OPERATOR__TYPE: - setType(TYPE_EDEFAULT); - return; - case GeometryPackage.OPERATOR__TRIANGLES: - getTriangles().clear(); - return; - case GeometryPackage.OPERATOR__CENTER: - setCenter((Vertex) null); - return; - case GeometryPackage.OPERATOR__PARENT: - setParent((INode) null); - return; + case GeometryPackage.OPERATOR__NAME: + setName(NAME_EDEFAULT); + return; + case GeometryPackage.OPERATOR__ID: + setId(ID_EDEFAULT); + return; + case GeometryPackage.OPERATOR__NODES: + getNodes().clear(); + return; + case GeometryPackage.OPERATOR__TYPE: + setType(TYPE_EDEFAULT); + return; + case GeometryPackage.OPERATOR__TRIANGLES: + getTriangles().clear(); + return; + case GeometryPackage.OPERATOR__CENTER: + setCenter((Vertex)null); + return; + case GeometryPackage.OPERATOR__PARENT: + setParent((INode)null); + return; } super.eUnset(featureID); } /** * - * * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { - case GeometryPackage.OPERATOR__NAME: - return NAME_EDEFAULT == null ? name != null - : !NAME_EDEFAULT.equals(name); - case GeometryPackage.OPERATOR__ID: - return id != ID_EDEFAULT; - case GeometryPackage.OPERATOR__NODES: - return nodes != null && !nodes.isEmpty(); - case GeometryPackage.OPERATOR__TYPE: - return TYPE_EDEFAULT == null ? type != null - : !TYPE_EDEFAULT.equals(type); - case GeometryPackage.OPERATOR__TRIANGLES: - return triangles != null && !triangles.isEmpty(); - case GeometryPackage.OPERATOR__CENTER: - return center != null; - case GeometryPackage.OPERATOR__PARENT: - return parent != null; + case GeometryPackage.OPERATOR__NAME: + return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); + case GeometryPackage.OPERATOR__ID: + return id != ID_EDEFAULT; + case GeometryPackage.OPERATOR__NODES: + return nodes != null && !nodes.isEmpty(); + case GeometryPackage.OPERATOR__TYPE: + return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type); + case GeometryPackage.OPERATOR__TRIANGLES: + return triangles != null && !triangles.isEmpty(); + case GeometryPackage.OPERATOR__CENTER: + return center != null; + case GeometryPackage.OPERATOR__PARENT: + return parent != null; } return super.eIsSet(featureID); } /** * - * * @generated */ @Override public Object eInvoke(int operationID, EList arguments) throws InvocationTargetException { switch (operationID) { - case GeometryPackage.OPERATOR___CHANGE_DECORATOR_PROPERTY__STRING_OBJECT: - changeDecoratorProperty((String) arguments.get(0), - arguments.get(1)); - return null; - case GeometryPackage.OPERATOR___GET_PROPERTY_NAMES: - return getPropertyNames(); - case GeometryPackage.OPERATOR___GET_PROPERTY__STRING: - return getProperty((String) arguments.get(0)); - case GeometryPackage.OPERATOR___SET_PROPERTY__STRING_DOUBLE: - setProperty((String) arguments.get(0), (Double) arguments.get(1)); - return null; - case GeometryPackage.OPERATOR___ADD_NODE__INODE: - addNode((INode) arguments.get(0)); - return null; - case GeometryPackage.OPERATOR___REMOVE_NODE__INODE: - removeNode((INode) arguments.get(0)); - return null; - case GeometryPackage.OPERATOR___COPY__OBJECT: - copy(arguments.get(0)); - return null; - case GeometryPackage.OPERATOR___CLONE: - return clone(); + case GeometryPackage.OPERATOR___CHANGE_DECORATOR_PROPERTY__STRING_OBJECT: + changeDecoratorProperty((String)arguments.get(0), arguments.get(1)); + return null; + case GeometryPackage.OPERATOR___GET_PROPERTY_NAMES: + return getPropertyNames(); + case GeometryPackage.OPERATOR___GET_PROPERTY__STRING: + return getProperty((String)arguments.get(0)); + case GeometryPackage.OPERATOR___SET_PROPERTY__STRING_DOUBLE: + setProperty((String)arguments.get(0), (Double)arguments.get(1)); + return null; + case GeometryPackage.OPERATOR___ADD_NODE__INODE: + addNode((INode)arguments.get(0)); + return null; + case GeometryPackage.OPERATOR___REMOVE_NODE__INODE: + removeNode((INode)arguments.get(0)); + return null; + case GeometryPackage.OPERATOR___COPY__OBJECT: + copy(arguments.get(0)); + return null; + case GeometryPackage.OPERATOR___CLONE: + return clone(); } return super.eInvoke(operationID, arguments); } /** * - * * @generated */ @Override public String toString() { - if (eIsProxy()) - return super.toString(); + if (eIsProxy()) return super.toString(); StringBuffer result = new StringBuffer(super.toString()); result.append(" (name: "); diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/ShapeImpl.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/ShapeImpl.java index 4eceb623..859012cd 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/ShapeImpl.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/ShapeImpl.java @@ -32,22 +32,14 @@ * The following features are implemented: *

*
    - *
  • {@link org.eclipse.january.geometry.impl.ShapeImpl#getName Name} - *
  • - *
  • {@link org.eclipse.january.geometry.impl.ShapeImpl#getId Id} - *
  • - *
  • {@link org.eclipse.january.geometry.impl.ShapeImpl#getNodes - * Nodes}
  • - *
  • {@link org.eclipse.january.geometry.impl.ShapeImpl#getType Type} - *
  • - *
  • {@link org.eclipse.january.geometry.impl.ShapeImpl#getTriangles - * Triangles}
  • - *
  • {@link org.eclipse.january.geometry.impl.ShapeImpl#getCenter - * Center}
  • - *
  • {@link org.eclipse.january.geometry.impl.ShapeImpl#getParent - * Parent}
  • - *
  • {@link org.eclipse.january.geometry.impl.ShapeImpl#getMaterial - * Material}
  • + *
  • {@link org.eclipse.january.geometry.impl.ShapeImpl#getName Name}
  • + *
  • {@link org.eclipse.january.geometry.impl.ShapeImpl#getId Id}
  • + *
  • {@link org.eclipse.january.geometry.impl.ShapeImpl#getNodes Nodes}
  • + *
  • {@link org.eclipse.january.geometry.impl.ShapeImpl#getType Type}
  • + *
  • {@link org.eclipse.january.geometry.impl.ShapeImpl#getTriangles Triangles}
  • + *
  • {@link org.eclipse.january.geometry.impl.ShapeImpl#getCenter Center}
  • + *
  • {@link org.eclipse.january.geometry.impl.ShapeImpl#getParent Parent}
  • + *
  • {@link org.eclipse.january.geometry.impl.ShapeImpl#getMaterial Material}
  • *
* * @generated @@ -56,7 +48,6 @@ public class ShapeImpl extends MinimalEObjectImpl.Container implements Shape { /** * The default value of the '{@link #getName() Name}' attribute. * - * * @see #getName() * @generated * @ordered @@ -66,7 +57,6 @@ public class ShapeImpl extends MinimalEObjectImpl.Container implements Shape { /** * The cached value of the '{@link #getName() Name}' attribute. * - * * @see #getName() * @generated * @ordered @@ -94,9 +84,8 @@ public class ShapeImpl extends MinimalEObjectImpl.Container implements Shape { protected long id = ID_EDEFAULT; /** - * The cached value of the '{@link #getNodes() Nodes}' containment - * reference list. - * + * The cached value of the '{@link #getNodes() Nodes}' containment reference list. + * * @see #getNodes() * @generated * @ordered @@ -106,7 +95,6 @@ public class ShapeImpl extends MinimalEObjectImpl.Container implements Shape { /** * The default value of the '{@link #getType() Type}' attribute. * - * * @see #getType() * @generated * @ordered @@ -116,7 +104,6 @@ public class ShapeImpl extends MinimalEObjectImpl.Container implements Shape { /** * The cached value of the '{@link #getType() Type}' attribute. * - * * @see #getType() * @generated * @ordered @@ -124,9 +111,8 @@ public class ShapeImpl extends MinimalEObjectImpl.Container implements Shape { protected String type = TYPE_EDEFAULT; /** - * The cached value of the '{@link #getTriangles() Triangles}' - * containment reference list. - * + * The cached value of the '{@link #getTriangles() Triangles}' containment reference list. + * * @see #getTriangles() * @generated * @ordered @@ -136,7 +122,6 @@ public class ShapeImpl extends MinimalEObjectImpl.Container implements Shape { /** * The cached value of the '{@link #getCenter() Center}' reference. * - * * @see #getCenter() * @generated * @ordered @@ -146,7 +131,6 @@ public class ShapeImpl extends MinimalEObjectImpl.Container implements Shape { /** * The cached value of the '{@link #getParent() Parent}' reference. * - * * @see #getParent() * @generated * @ordered @@ -154,9 +138,8 @@ public class ShapeImpl extends MinimalEObjectImpl.Container implements Shape { protected INode parent; /** - * The cached value of the '{@link #getMaterial() Material}' - * containment reference. - * + * The cached value of the '{@link #getMaterial() Material}' containment reference. + * * @see #getMaterial() * @generated * @ordered @@ -186,7 +169,6 @@ protected ShapeImpl() { /** * - * * @generated */ @Override @@ -196,7 +178,6 @@ protected EClass eStaticClass() { /** * - * * @generated */ @Override @@ -206,7 +187,6 @@ public String getName() { /** * - * * @generated */ @Override @@ -214,13 +194,11 @@ public void setName(String newName) { String oldName = name; name = newName; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.SHAPE__NAME, oldName, name)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.SHAPE__NAME, oldName, name)); } /** * - * * @generated */ @Override @@ -230,7 +208,6 @@ public long getId() { /** * - * * @generated */ @Override @@ -238,27 +215,23 @@ public void setId(long newId) { long oldId = id; id = newId; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.SHAPE__ID, oldId, id)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.SHAPE__ID, oldId, id)); } /** * - * * @generated */ @Override public EList getNodes() { if (nodes == null) { - nodes = new EObjectContainmentEList(INode.class, this, - GeometryPackage.SHAPE__NODES); + nodes = new EObjectContainmentEList(INode.class, this, GeometryPackage.SHAPE__NODES); } return nodes; } /** * - * * @generated */ @Override @@ -268,7 +241,6 @@ public String getType() { /** * - * * @generated */ @Override @@ -276,38 +248,33 @@ public void setType(String newType) { String oldType = type; type = newType; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.SHAPE__TYPE, oldType, type)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.SHAPE__TYPE, oldType, type)); } /** * - * * @generated */ @Override public EList getTriangles() { if (triangles == null) { - triangles = new EObjectContainmentEList(Triangle.class, - this, GeometryPackage.SHAPE__TRIANGLES); + triangles = new EObjectContainmentEList(Triangle.class, this, GeometryPackage.SHAPE__TRIANGLES); } return triangles; } /** * - * * @generated */ @Override public Vertex getCenter() { if (center != null && center.eIsProxy()) { - InternalEObject oldCenter = (InternalEObject) center; - center = (Vertex) eResolveProxy(oldCenter); + InternalEObject oldCenter = (InternalEObject)center; + center = (Vertex)eResolveProxy(oldCenter); if (center != oldCenter) { if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.RESOLVE, - GeometryPackage.SHAPE__CENTER, oldCenter, center)); + eNotify(new ENotificationImpl(this, Notification.RESOLVE, GeometryPackage.SHAPE__CENTER, oldCenter, center)); } } return center; @@ -315,7 +282,6 @@ public Vertex getCenter() { /** * - * * @generated */ public Vertex basicGetCenter() { @@ -324,7 +290,6 @@ public Vertex basicGetCenter() { /** * - * * @generated */ @Override @@ -332,24 +297,21 @@ public void setCenter(Vertex newCenter) { Vertex oldCenter = center; center = newCenter; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.SHAPE__CENTER, oldCenter, center)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.SHAPE__CENTER, oldCenter, center)); } /** * - * * @generated */ @Override public INode getParent() { if (parent != null && parent.eIsProxy()) { - InternalEObject oldParent = (InternalEObject) parent; - parent = (INode) eResolveProxy(oldParent); + InternalEObject oldParent = (InternalEObject)parent; + parent = (INode)eResolveProxy(oldParent); if (parent != oldParent) { if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.RESOLVE, - GeometryPackage.SHAPE__PARENT, oldParent, parent)); + eNotify(new ENotificationImpl(this, Notification.RESOLVE, GeometryPackage.SHAPE__PARENT, oldParent, parent)); } } return parent; @@ -357,7 +319,6 @@ public INode getParent() { /** * - * * @generated */ public INode basicGetParent() { @@ -366,7 +327,6 @@ public INode basicGetParent() { /** * - * * @generated */ @Override @@ -374,13 +334,11 @@ public void setParent(INode newParent) { INode oldParent = parent; parent = newParent; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.SHAPE__PARENT, oldParent, parent)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.SHAPE__PARENT, oldParent, parent)); } /** * - * * @generated */ @Override @@ -390,7 +348,6 @@ public Material getMaterial() { /** * - * * @generated */ public NotificationChain basicSetMaterial(Material newMaterial, @@ -398,20 +355,14 @@ public NotificationChain basicSetMaterial(Material newMaterial, Material oldMaterial = material; material = newMaterial; if (eNotificationRequired()) { - ENotificationImpl notification = new ENotificationImpl(this, - Notification.SET, GeometryPackage.SHAPE__MATERIAL, - oldMaterial, newMaterial); - if (msgs == null) - msgs = notification; - else - msgs.add(notification); + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, GeometryPackage.SHAPE__MATERIAL, oldMaterial, newMaterial); + if (msgs == null) msgs = notification; else msgs.add(notification); } return msgs; } /** * - * * @generated */ @Override @@ -419,23 +370,14 @@ public void setMaterial(Material newMaterial) { if (newMaterial != material) { NotificationChain msgs = null; if (material != null) - msgs = ((InternalEObject) material) - .eInverseRemove(this, - EOPPOSITE_FEATURE_BASE - - GeometryPackage.SHAPE__MATERIAL, - null, msgs); + msgs = ((InternalEObject)material).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - GeometryPackage.SHAPE__MATERIAL, null, msgs); if (newMaterial != null) - msgs = ((InternalEObject) newMaterial) - .eInverseAdd(this, - EOPPOSITE_FEATURE_BASE - - GeometryPackage.SHAPE__MATERIAL, - null, msgs); + msgs = ((InternalEObject)newMaterial).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - GeometryPackage.SHAPE__MATERIAL, null, msgs); msgs = basicSetMaterial(newMaterial, msgs); - if (msgs != null) - msgs.dispatch(); - } else if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.SHAPE__MATERIAL, newMaterial, newMaterial)); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.SHAPE__MATERIAL, newMaterial, newMaterial)); } /** @@ -619,205 +561,191 @@ public Object clone() { /** * - * * @generated */ @Override public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { - case GeometryPackage.SHAPE__NODES: - return ((InternalEList) getNodes()).basicRemove(otherEnd, msgs); - case GeometryPackage.SHAPE__TRIANGLES: - return ((InternalEList) getTriangles()).basicRemove(otherEnd, - msgs); - case GeometryPackage.SHAPE__MATERIAL: - return basicSetMaterial(null, msgs); + case GeometryPackage.SHAPE__NODES: + return ((InternalEList)getNodes()).basicRemove(otherEnd, msgs); + case GeometryPackage.SHAPE__TRIANGLES: + return ((InternalEList)getTriangles()).basicRemove(otherEnd, msgs); + case GeometryPackage.SHAPE__MATERIAL: + return basicSetMaterial(null, msgs); } return super.eInverseRemove(otherEnd, featureID, msgs); } /** * - * * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { - case GeometryPackage.SHAPE__NAME: - return getName(); - case GeometryPackage.SHAPE__ID: - return getId(); - case GeometryPackage.SHAPE__NODES: - return getNodes(); - case GeometryPackage.SHAPE__TYPE: - return getType(); - case GeometryPackage.SHAPE__TRIANGLES: - return getTriangles(); - case GeometryPackage.SHAPE__CENTER: - if (resolve) - return getCenter(); - return basicGetCenter(); - case GeometryPackage.SHAPE__PARENT: - if (resolve) - return getParent(); - return basicGetParent(); - case GeometryPackage.SHAPE__MATERIAL: - return getMaterial(); + case GeometryPackage.SHAPE__NAME: + return getName(); + case GeometryPackage.SHAPE__ID: + return getId(); + case GeometryPackage.SHAPE__NODES: + return getNodes(); + case GeometryPackage.SHAPE__TYPE: + return getType(); + case GeometryPackage.SHAPE__TRIANGLES: + return getTriangles(); + case GeometryPackage.SHAPE__CENTER: + if (resolve) return getCenter(); + return basicGetCenter(); + case GeometryPackage.SHAPE__PARENT: + if (resolve) return getParent(); + return basicGetParent(); + case GeometryPackage.SHAPE__MATERIAL: + return getMaterial(); } return super.eGet(featureID, resolve, coreType); } /** * - * * @generated */ @SuppressWarnings("unchecked") @Override public void eSet(int featureID, Object newValue) { switch (featureID) { - case GeometryPackage.SHAPE__NAME: - setName((String) newValue); - return; - case GeometryPackage.SHAPE__ID: - setId((Long) newValue); - return; - case GeometryPackage.SHAPE__NODES: - getNodes().clear(); - getNodes().addAll((Collection) newValue); - return; - case GeometryPackage.SHAPE__TYPE: - setType((String) newValue); - return; - case GeometryPackage.SHAPE__TRIANGLES: - getTriangles().clear(); - getTriangles().addAll((Collection) newValue); - return; - case GeometryPackage.SHAPE__CENTER: - setCenter((Vertex) newValue); - return; - case GeometryPackage.SHAPE__PARENT: - setParent((INode) newValue); - return; - case GeometryPackage.SHAPE__MATERIAL: - setMaterial((Material) newValue); - return; + case GeometryPackage.SHAPE__NAME: + setName((String)newValue); + return; + case GeometryPackage.SHAPE__ID: + setId((Long)newValue); + return; + case GeometryPackage.SHAPE__NODES: + getNodes().clear(); + getNodes().addAll((Collection)newValue); + return; + case GeometryPackage.SHAPE__TYPE: + setType((String)newValue); + return; + case GeometryPackage.SHAPE__TRIANGLES: + getTriangles().clear(); + getTriangles().addAll((Collection)newValue); + return; + case GeometryPackage.SHAPE__CENTER: + setCenter((Vertex)newValue); + return; + case GeometryPackage.SHAPE__PARENT: + setParent((INode)newValue); + return; + case GeometryPackage.SHAPE__MATERIAL: + setMaterial((Material)newValue); + return; } super.eSet(featureID, newValue); } /** * - * * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { - case GeometryPackage.SHAPE__NAME: - setName(NAME_EDEFAULT); - return; - case GeometryPackage.SHAPE__ID: - setId(ID_EDEFAULT); - return; - case GeometryPackage.SHAPE__NODES: - getNodes().clear(); - return; - case GeometryPackage.SHAPE__TYPE: - setType(TYPE_EDEFAULT); - return; - case GeometryPackage.SHAPE__TRIANGLES: - getTriangles().clear(); - return; - case GeometryPackage.SHAPE__CENTER: - setCenter((Vertex) null); - return; - case GeometryPackage.SHAPE__PARENT: - setParent((INode) null); - return; - case GeometryPackage.SHAPE__MATERIAL: - setMaterial((Material) null); - return; + case GeometryPackage.SHAPE__NAME: + setName(NAME_EDEFAULT); + return; + case GeometryPackage.SHAPE__ID: + setId(ID_EDEFAULT); + return; + case GeometryPackage.SHAPE__NODES: + getNodes().clear(); + return; + case GeometryPackage.SHAPE__TYPE: + setType(TYPE_EDEFAULT); + return; + case GeometryPackage.SHAPE__TRIANGLES: + getTriangles().clear(); + return; + case GeometryPackage.SHAPE__CENTER: + setCenter((Vertex)null); + return; + case GeometryPackage.SHAPE__PARENT: + setParent((INode)null); + return; + case GeometryPackage.SHAPE__MATERIAL: + setMaterial((Material)null); + return; } super.eUnset(featureID); } /** * - * * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { - case GeometryPackage.SHAPE__NAME: - return NAME_EDEFAULT == null ? name != null - : !NAME_EDEFAULT.equals(name); - case GeometryPackage.SHAPE__ID: - return id != ID_EDEFAULT; - case GeometryPackage.SHAPE__NODES: - return nodes != null && !nodes.isEmpty(); - case GeometryPackage.SHAPE__TYPE: - return TYPE_EDEFAULT == null ? type != null - : !TYPE_EDEFAULT.equals(type); - case GeometryPackage.SHAPE__TRIANGLES: - return triangles != null && !triangles.isEmpty(); - case GeometryPackage.SHAPE__CENTER: - return center != null; - case GeometryPackage.SHAPE__PARENT: - return parent != null; - case GeometryPackage.SHAPE__MATERIAL: - return material != null; + case GeometryPackage.SHAPE__NAME: + return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); + case GeometryPackage.SHAPE__ID: + return id != ID_EDEFAULT; + case GeometryPackage.SHAPE__NODES: + return nodes != null && !nodes.isEmpty(); + case GeometryPackage.SHAPE__TYPE: + return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type); + case GeometryPackage.SHAPE__TRIANGLES: + return triangles != null && !triangles.isEmpty(); + case GeometryPackage.SHAPE__CENTER: + return center != null; + case GeometryPackage.SHAPE__PARENT: + return parent != null; + case GeometryPackage.SHAPE__MATERIAL: + return material != null; } return super.eIsSet(featureID); } /** * - * * @generated */ @Override public Object eInvoke(int operationID, EList arguments) throws InvocationTargetException { switch (operationID) { - case GeometryPackage.SHAPE___CHANGE_DECORATOR_PROPERTY__STRING_OBJECT: - changeDecoratorProperty((String) arguments.get(0), - arguments.get(1)); - return null; - case GeometryPackage.SHAPE___GET_PROPERTY_NAMES: - return getPropertyNames(); - case GeometryPackage.SHAPE___GET_PROPERTY__STRING: - return getProperty((String) arguments.get(0)); - case GeometryPackage.SHAPE___SET_PROPERTY__STRING_DOUBLE: - setProperty((String) arguments.get(0), (Double) arguments.get(1)); - return null; - case GeometryPackage.SHAPE___ADD_NODE__INODE: - addNode((INode) arguments.get(0)); - return null; - case GeometryPackage.SHAPE___REMOVE_NODE__INODE: - removeNode((INode) arguments.get(0)); - return null; - case GeometryPackage.SHAPE___COPY__OBJECT: - copy(arguments.get(0)); - return null; - case GeometryPackage.SHAPE___CLONE: - return clone(); + case GeometryPackage.SHAPE___CHANGE_DECORATOR_PROPERTY__STRING_OBJECT: + changeDecoratorProperty((String)arguments.get(0), arguments.get(1)); + return null; + case GeometryPackage.SHAPE___GET_PROPERTY_NAMES: + return getPropertyNames(); + case GeometryPackage.SHAPE___GET_PROPERTY__STRING: + return getProperty((String)arguments.get(0)); + case GeometryPackage.SHAPE___SET_PROPERTY__STRING_DOUBLE: + setProperty((String)arguments.get(0), (Double)arguments.get(1)); + return null; + case GeometryPackage.SHAPE___ADD_NODE__INODE: + addNode((INode)arguments.get(0)); + return null; + case GeometryPackage.SHAPE___REMOVE_NODE__INODE: + removeNode((INode)arguments.get(0)); + return null; + case GeometryPackage.SHAPE___COPY__OBJECT: + copy(arguments.get(0)); + return null; + case GeometryPackage.SHAPE___CLONE: + return clone(); } return super.eInvoke(operationID, arguments); } /** * - * * @generated */ @Override public String toString() { - if (eIsProxy()) - return super.toString(); + if (eIsProxy()) return super.toString(); StringBuffer result = new StringBuffer(super.toString()); result.append(" (name: "); diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/SphereImpl.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/SphereImpl.java index af0a4e3a..93663588 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/SphereImpl.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/SphereImpl.java @@ -23,17 +23,15 @@ * The following features are implemented: *

*
    - *
  • {@link org.eclipse.january.geometry.impl.SphereImpl#getRadius - * Radius}
  • + *
  • {@link org.eclipse.january.geometry.impl.SphereImpl#getRadius Radius}
  • *
* * @generated */ public class SphereImpl extends ShapeImpl implements Sphere { /** - * The default value of the '{@link #getRadius() Radius}' - * attribute. - * + * The default value of the '{@link #getRadius() Radius}' attribute. + * * @see #getRadius() * @generated * @ordered @@ -43,7 +41,6 @@ public class SphereImpl extends ShapeImpl implements Sphere { /** * The cached value of the '{@link #getRadius() Radius}' attribute. * - * * @see #getRadius() * @generated * @ordered @@ -67,19 +64,14 @@ public class SphereImpl extends ShapeImpl implements Sphere { /** * - * * @generated */ protected SphereImpl() { super(); - - // Populate the properties map - properties.put("radius", radius); } /** * - * * @generated */ @Override @@ -89,7 +81,6 @@ protected EClass eStaticClass() { /** * - * * @generated */ @Override @@ -118,71 +109,65 @@ public void setRadius(double newRadius) { /** * - * * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { - case GeometryPackage.SPHERE__RADIUS: - return getRadius(); + case GeometryPackage.SPHERE__RADIUS: + return getRadius(); } return super.eGet(featureID, resolve, coreType); } /** * - * * @generated */ @Override public void eSet(int featureID, Object newValue) { switch (featureID) { - case GeometryPackage.SPHERE__RADIUS: - setRadius((Double) newValue); - return; + case GeometryPackage.SPHERE__RADIUS: + setRadius((Double)newValue); + return; } super.eSet(featureID, newValue); } /** * - * * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { - case GeometryPackage.SPHERE__RADIUS: - setRadius(RADIUS_EDEFAULT); - return; + case GeometryPackage.SPHERE__RADIUS: + setRadius(RADIUS_EDEFAULT); + return; } super.eUnset(featureID); } /** * - * * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { - case GeometryPackage.SPHERE__RADIUS: - return radius != RADIUS_EDEFAULT; + case GeometryPackage.SPHERE__RADIUS: + return radius != RADIUS_EDEFAULT; } return super.eIsSet(featureID); } /** * - * * @generated */ @Override public String toString() { - if (eIsProxy()) - return super.toString(); + if (eIsProxy()) return super.toString(); StringBuffer result = new StringBuffer(super.toString()); result.append(" (radius: "); diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/TriangleImpl.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/TriangleImpl.java index fdc960cb..e1de23e8 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/TriangleImpl.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/TriangleImpl.java @@ -25,10 +25,8 @@ * The following features are implemented: *

*
    - *
  • {@link org.eclipse.january.geometry.impl.TriangleImpl#getNormal - * Normal}
  • - *
  • {@link org.eclipse.january.geometry.impl.TriangleImpl#getVertices - * Vertices}
  • + *
  • {@link org.eclipse.january.geometry.impl.TriangleImpl#getNormal Normal}
  • + *
  • {@link org.eclipse.january.geometry.impl.TriangleImpl#getVertices Vertices}
  • *
* * @generated @@ -36,9 +34,8 @@ public class TriangleImpl extends MinimalEObjectImpl.Container implements Triangle { /** - * The cached value of the '{@link #getNormal() Normal}' - * containment reference. - * + * The cached value of the '{@link #getNormal() Normal}' containment reference. + * * @see #getNormal() * @generated * @ordered @@ -46,9 +43,8 @@ public class TriangleImpl extends MinimalEObjectImpl.Container protected Vertex normal; /** - * The cached value of the '{@link #getVertices() Vertices}' - * containment reference list. - * + * The cached value of the '{@link #getVertices() Vertices}' containment reference list. + * * @see #getVertices() * @generated * @ordered @@ -69,7 +65,6 @@ protected TriangleImpl() { /** * - * * @generated */ @Override @@ -79,7 +74,6 @@ protected EClass eStaticClass() { /** * - * * @generated */ @Override @@ -89,7 +83,6 @@ public Vertex getNormal() { /** * - * * @generated */ public NotificationChain basicSetNormal(Vertex newNormal, @@ -97,20 +90,14 @@ public NotificationChain basicSetNormal(Vertex newNormal, Vertex oldNormal = normal; normal = newNormal; if (eNotificationRequired()) { - ENotificationImpl notification = new ENotificationImpl(this, - Notification.SET, GeometryPackage.TRIANGLE__NORMAL, - oldNormal, newNormal); - if (msgs == null) - msgs = notification; - else - msgs.add(notification); + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, GeometryPackage.TRIANGLE__NORMAL, oldNormal, newNormal); + if (msgs == null) msgs = notification; else msgs.add(notification); } return msgs; } /** * - * * @generated */ @Override @@ -118,123 +105,106 @@ public void setNormal(Vertex newNormal) { if (newNormal != normal) { NotificationChain msgs = null; if (normal != null) - msgs = ((InternalEObject) normal) - .eInverseRemove(this, - EOPPOSITE_FEATURE_BASE - - GeometryPackage.TRIANGLE__NORMAL, - null, msgs); + msgs = ((InternalEObject)normal).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - GeometryPackage.TRIANGLE__NORMAL, null, msgs); if (newNormal != null) - msgs = ((InternalEObject) newNormal) - .eInverseAdd(this, - EOPPOSITE_FEATURE_BASE - - GeometryPackage.TRIANGLE__NORMAL, - null, msgs); + msgs = ((InternalEObject)newNormal).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - GeometryPackage.TRIANGLE__NORMAL, null, msgs); msgs = basicSetNormal(newNormal, msgs); - if (msgs != null) - msgs.dispatch(); - } else if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.TRIANGLE__NORMAL, newNormal, newNormal)); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.TRIANGLE__NORMAL, newNormal, newNormal)); } /** * - * * @generated */ @Override public EList getVertices() { if (vertices == null) { - vertices = new EObjectContainmentEList(Vertex.class, this, - GeometryPackage.TRIANGLE__VERTICES); + vertices = new EObjectContainmentEList(Vertex.class, this, GeometryPackage.TRIANGLE__VERTICES); } return vertices; } /** * - * * @generated */ @Override public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { - case GeometryPackage.TRIANGLE__NORMAL: - return basicSetNormal(null, msgs); - case GeometryPackage.TRIANGLE__VERTICES: - return ((InternalEList) getVertices()).basicRemove(otherEnd, - msgs); + case GeometryPackage.TRIANGLE__NORMAL: + return basicSetNormal(null, msgs); + case GeometryPackage.TRIANGLE__VERTICES: + return ((InternalEList)getVertices()).basicRemove(otherEnd, msgs); } return super.eInverseRemove(otherEnd, featureID, msgs); } /** * - * * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { - case GeometryPackage.TRIANGLE__NORMAL: - return getNormal(); - case GeometryPackage.TRIANGLE__VERTICES: - return getVertices(); + case GeometryPackage.TRIANGLE__NORMAL: + return getNormal(); + case GeometryPackage.TRIANGLE__VERTICES: + return getVertices(); } return super.eGet(featureID, resolve, coreType); } /** * - * * @generated */ @SuppressWarnings("unchecked") @Override public void eSet(int featureID, Object newValue) { switch (featureID) { - case GeometryPackage.TRIANGLE__NORMAL: - setNormal((Vertex) newValue); - return; - case GeometryPackage.TRIANGLE__VERTICES: - getVertices().clear(); - getVertices().addAll((Collection) newValue); - return; + case GeometryPackage.TRIANGLE__NORMAL: + setNormal((Vertex)newValue); + return; + case GeometryPackage.TRIANGLE__VERTICES: + getVertices().clear(); + getVertices().addAll((Collection)newValue); + return; } super.eSet(featureID, newValue); } /** * - * * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { - case GeometryPackage.TRIANGLE__NORMAL: - setNormal((Vertex) null); - return; - case GeometryPackage.TRIANGLE__VERTICES: - getVertices().clear(); - return; + case GeometryPackage.TRIANGLE__NORMAL: + setNormal((Vertex)null); + return; + case GeometryPackage.TRIANGLE__VERTICES: + getVertices().clear(); + return; } super.eUnset(featureID); } /** * - * * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { - case GeometryPackage.TRIANGLE__NORMAL: - return normal != null; - case GeometryPackage.TRIANGLE__VERTICES: - return vertices != null && !vertices.isEmpty(); + case GeometryPackage.TRIANGLE__NORMAL: + return normal != null; + case GeometryPackage.TRIANGLE__VERTICES: + return vertices != null && !vertices.isEmpty(); } return super.eIsSet(featureID); } diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/TubeImpl.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/TubeImpl.java index 2b0b2c7c..0559b8d1 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/TubeImpl.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/TubeImpl.java @@ -23,21 +23,17 @@ * The following features are implemented: *

*
    - *
  • {@link org.eclipse.january.geometry.impl.TubeImpl#getHeight - * Height}
  • - *
  • {@link org.eclipse.january.geometry.impl.TubeImpl#getInnerRadius - * Inner Radius}
  • - *
  • {@link org.eclipse.january.geometry.impl.TubeImpl#getRadius - * Radius}
  • + *
  • {@link org.eclipse.january.geometry.impl.TubeImpl#getHeight Height}
  • + *
  • {@link org.eclipse.january.geometry.impl.TubeImpl#getInnerRadius Inner Radius}
  • + *
  • {@link org.eclipse.january.geometry.impl.TubeImpl#getRadius Radius}
  • *
* * @generated */ public class TubeImpl extends ShapeImpl implements Tube { /** - * The default value of the '{@link #getHeight() Height}' - * attribute. - * + * The default value of the '{@link #getHeight() Height}' attribute. + * * @see #getHeight() * @generated * @ordered @@ -47,7 +43,6 @@ public class TubeImpl extends ShapeImpl implements Tube { /** * The cached value of the '{@link #getHeight() Height}' attribute. * - * * @see #getHeight() * @generated * @ordered @@ -55,9 +50,8 @@ public class TubeImpl extends ShapeImpl implements Tube { protected double height = HEIGHT_EDEFAULT; /** - * The default value of the '{@link #getInnerRadius() Inner Radius} - * ' attribute. - * + * The default value of the '{@link #getInnerRadius() Inner Radius}' attribute. + * * @see #getInnerRadius() * @generated * @ordered @@ -65,9 +59,8 @@ public class TubeImpl extends ShapeImpl implements Tube { protected static final double INNER_RADIUS_EDEFAULT = 0.0; /** - * The cached value of the '{@link #getInnerRadius() Inner Radius}' - * attribute. - * + * The cached value of the '{@link #getInnerRadius() Inner Radius}' attribute. + * * @see #getInnerRadius() * @generated * @ordered @@ -75,9 +68,8 @@ public class TubeImpl extends ShapeImpl implements Tube { protected double innerRadius = INNER_RADIUS_EDEFAULT; /** - * The default value of the '{@link #getRadius() Radius}' - * attribute. - * + * The default value of the '{@link #getRadius() Radius}' attribute. + * * @see #getRadius() * @generated * @ordered @@ -87,7 +79,6 @@ public class TubeImpl extends ShapeImpl implements Tube { /** * The cached value of the '{@link #getRadius() Radius}' attribute. * - * * @see #getRadius() * @generated * @ordered @@ -131,21 +122,14 @@ public class TubeImpl extends ShapeImpl implements Tube { /** * - * * @generated */ protected TubeImpl() { super(); - - // Populate the properties map - properties.put("height", height); - properties.put("innerRadius", innerRadius); - properties.put("radius", radius); } /** * - * * @generated */ @Override @@ -155,7 +139,6 @@ protected EClass eStaticClass() { /** * - * * @generated */ @Override @@ -184,7 +167,6 @@ public void setHeight(double newHeight) { /** * - * * @generated */ @Override @@ -214,7 +196,6 @@ public void setInnerRadius(double newInnerRadius) { /** * - * * @generated */ @Override @@ -243,91 +224,85 @@ public void setRadius(double newRadius) { /** * - * * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { - case GeometryPackage.TUBE__HEIGHT: - return getHeight(); - case GeometryPackage.TUBE__INNER_RADIUS: - return getInnerRadius(); - case GeometryPackage.TUBE__RADIUS: - return getRadius(); + case GeometryPackage.TUBE__HEIGHT: + return getHeight(); + case GeometryPackage.TUBE__INNER_RADIUS: + return getInnerRadius(); + case GeometryPackage.TUBE__RADIUS: + return getRadius(); } return super.eGet(featureID, resolve, coreType); } /** * - * * @generated */ @Override public void eSet(int featureID, Object newValue) { switch (featureID) { - case GeometryPackage.TUBE__HEIGHT: - setHeight((Double) newValue); - return; - case GeometryPackage.TUBE__INNER_RADIUS: - setInnerRadius((Double) newValue); - return; - case GeometryPackage.TUBE__RADIUS: - setRadius((Double) newValue); - return; + case GeometryPackage.TUBE__HEIGHT: + setHeight((Double)newValue); + return; + case GeometryPackage.TUBE__INNER_RADIUS: + setInnerRadius((Double)newValue); + return; + case GeometryPackage.TUBE__RADIUS: + setRadius((Double)newValue); + return; } super.eSet(featureID, newValue); } /** * - * * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { - case GeometryPackage.TUBE__HEIGHT: - setHeight(HEIGHT_EDEFAULT); - return; - case GeometryPackage.TUBE__INNER_RADIUS: - setInnerRadius(INNER_RADIUS_EDEFAULT); - return; - case GeometryPackage.TUBE__RADIUS: - setRadius(RADIUS_EDEFAULT); - return; + case GeometryPackage.TUBE__HEIGHT: + setHeight(HEIGHT_EDEFAULT); + return; + case GeometryPackage.TUBE__INNER_RADIUS: + setInnerRadius(INNER_RADIUS_EDEFAULT); + return; + case GeometryPackage.TUBE__RADIUS: + setRadius(RADIUS_EDEFAULT); + return; } super.eUnset(featureID); } /** * - * * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { - case GeometryPackage.TUBE__HEIGHT: - return height != HEIGHT_EDEFAULT; - case GeometryPackage.TUBE__INNER_RADIUS: - return innerRadius != INNER_RADIUS_EDEFAULT; - case GeometryPackage.TUBE__RADIUS: - return radius != RADIUS_EDEFAULT; + case GeometryPackage.TUBE__HEIGHT: + return height != HEIGHT_EDEFAULT; + case GeometryPackage.TUBE__INNER_RADIUS: + return innerRadius != INNER_RADIUS_EDEFAULT; + case GeometryPackage.TUBE__RADIUS: + return radius != RADIUS_EDEFAULT; } return super.eIsSet(featureID); } /** * - * * @generated */ @Override public String toString() { - if (eIsProxy()) - return super.toString(); + if (eIsProxy()) return super.toString(); StringBuffer result = new StringBuffer(super.toString()); result.append(" (height: "); diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/UnionImpl.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/UnionImpl.java index a9bc6824..839e1f97 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/UnionImpl.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/UnionImpl.java @@ -27,7 +27,6 @@ protected UnionImpl() { /** * - * * @generated */ @Override diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/VertexImpl.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/VertexImpl.java index 8513401d..608a6168 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/VertexImpl.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/VertexImpl.java @@ -20,9 +20,9 @@ * The following features are implemented: *

*
    - *
  • {@link org.eclipse.january.geometry.impl.VertexImpl#getX X}
  • - *
  • {@link org.eclipse.january.geometry.impl.VertexImpl#getY Y}
  • - *
  • {@link org.eclipse.january.geometry.impl.VertexImpl#getZ Z}
  • + *
  • {@link org.eclipse.january.geometry.impl.VertexImpl#getX X}
  • + *
  • {@link org.eclipse.january.geometry.impl.VertexImpl#getY Y}
  • + *
  • {@link org.eclipse.january.geometry.impl.VertexImpl#getZ Z}
  • *
* * @generated @@ -90,7 +90,6 @@ public class VertexImpl extends MinimalEObjectImpl.Container implements Vertex { /** * - * * @generated */ protected VertexImpl() { @@ -99,7 +98,6 @@ protected VertexImpl() { /** * - * * @generated */ @Override @@ -109,7 +107,6 @@ protected EClass eStaticClass() { /** * - * * @generated */ @Override @@ -119,7 +116,6 @@ public double getX() { /** * - * * @generated */ @Override @@ -127,13 +123,11 @@ public void setX(double newX) { double oldX = x; x = newX; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.VERTEX__X, oldX, x)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.VERTEX__X, oldX, x)); } /** * - * * @generated */ @Override @@ -143,7 +137,6 @@ public double getY() { /** * - * * @generated */ @Override @@ -151,13 +144,11 @@ public void setY(double newY) { double oldY = y; y = newY; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.VERTEX__Y, oldY, y)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.VERTEX__Y, oldY, y)); } /** * - * * @generated */ @Override @@ -167,7 +158,6 @@ public double getZ() { /** * - * * @generated */ @Override @@ -175,8 +165,7 @@ public void setZ(double newZ) { double oldZ = z; z = newZ; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, - GeometryPackage.VERTEX__Z, oldZ, z)); + eNotify(new ENotificationImpl(this, Notification.SET, GeometryPackage.VERTEX__Z, oldZ, z)); } /** @@ -199,106 +188,99 @@ public Object clone() { /** * - * * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { - case GeometryPackage.VERTEX__X: - return getX(); - case GeometryPackage.VERTEX__Y: - return getY(); - case GeometryPackage.VERTEX__Z: - return getZ(); + case GeometryPackage.VERTEX__X: + return getX(); + case GeometryPackage.VERTEX__Y: + return getY(); + case GeometryPackage.VERTEX__Z: + return getZ(); } return super.eGet(featureID, resolve, coreType); } /** * - * * @generated */ @Override public void eSet(int featureID, Object newValue) { switch (featureID) { - case GeometryPackage.VERTEX__X: - setX((Double) newValue); - return; - case GeometryPackage.VERTEX__Y: - setY((Double) newValue); - return; - case GeometryPackage.VERTEX__Z: - setZ((Double) newValue); - return; + case GeometryPackage.VERTEX__X: + setX((Double)newValue); + return; + case GeometryPackage.VERTEX__Y: + setY((Double)newValue); + return; + case GeometryPackage.VERTEX__Z: + setZ((Double)newValue); + return; } super.eSet(featureID, newValue); } /** * - * * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { - case GeometryPackage.VERTEX__X: - setX(X_EDEFAULT); - return; - case GeometryPackage.VERTEX__Y: - setY(Y_EDEFAULT); - return; - case GeometryPackage.VERTEX__Z: - setZ(Z_EDEFAULT); - return; + case GeometryPackage.VERTEX__X: + setX(X_EDEFAULT); + return; + case GeometryPackage.VERTEX__Y: + setY(Y_EDEFAULT); + return; + case GeometryPackage.VERTEX__Z: + setZ(Z_EDEFAULT); + return; } super.eUnset(featureID); } /** * - * * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { - case GeometryPackage.VERTEX__X: - return x != X_EDEFAULT; - case GeometryPackage.VERTEX__Y: - return y != Y_EDEFAULT; - case GeometryPackage.VERTEX__Z: - return z != Z_EDEFAULT; + case GeometryPackage.VERTEX__X: + return x != X_EDEFAULT; + case GeometryPackage.VERTEX__Y: + return y != Y_EDEFAULT; + case GeometryPackage.VERTEX__Z: + return z != Z_EDEFAULT; } return super.eIsSet(featureID); } /** * - * * @generated */ @Override public Object eInvoke(int operationID, EList arguments) throws InvocationTargetException { switch (operationID) { - case GeometryPackage.VERTEX___CLONE: - return clone(); + case GeometryPackage.VERTEX___CLONE: + return clone(); } return super.eInvoke(operationID, arguments); } /** * - * * @generated */ @Override public String toString() { - if (eIsProxy()) - return super.toString(); + if (eIsProxy()) return super.toString(); StringBuffer result = new StringBuffer(super.toString()); result.append(" (x: "); From 762ad1db1d95fe472da7e7d3adf57ab15ab42c7f Mon Sep 17 00:00:00 2001 From: Kasper Gammeltoft Date: Fri, 1 Jul 2016 14:00:03 -0400 Subject: [PATCH 2/3] Fixed STL importer Signed-off-by: Kasper Gammeltoft --- .../ASCIISTLGeometryImporterItemProvider.java | 8 +- .../GeometryItemProviderAdapterFactory.java | 4 +- .../geometry/presentation/GeometryEditor.java | 2 +- .../presentation/GeometryModelWizard.java | 2 +- .../src/geometry/tests/GeometryTests.java | 2 +- ...Test.java => STLGeometryImporterTest.java} | 14 +- .../model/geometry.ecore | 2 +- .../january/geometry/GeometryFactory.java | 2 +- .../january/geometry/GeometryPackage.java | 12 +- ...Importer.java => STLGeometryImporter.java} | 2 +- .../geometry/impl/GeometryFactoryImpl.java | 4 +- .../geometry/impl/GeometryPackageImpl.java | 4 +- ...Impl.java => STLGeometryImporterImpl.java} | 132 ++++++++++++++++-- .../geometry/util/GeometryAdapterFactory.java | 6 +- .../january/geometry/util/GeometrySwitch.java | 4 +- .../ASCIISTLGeometryImporterValidator.java | 2 +- 16 files changed, 154 insertions(+), 48 deletions(-) rename org.eclipse.january.geometry.model.tests/src/geometry/tests/{ASCIISTLGeometryImporterTest.java => STLGeometryImporterTest.java} (81%) rename org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/{ASCIISTLGeometryImporter.java => STLGeometryImporter.java} (84%) rename org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/{ASCIISTLGeometryImporterImpl.java => STLGeometryImporterImpl.java} (54%) diff --git a/org.eclipse.january.geometry.model.edit/src/org/eclipse/january/geometry/provider/ASCIISTLGeometryImporterItemProvider.java b/org.eclipse.january.geometry.model.edit/src/org/eclipse/january/geometry/provider/ASCIISTLGeometryImporterItemProvider.java index 9a7ba16f..4bddc07c 100644 --- a/org.eclipse.january.geometry.model.edit/src/org/eclipse/january/geometry/provider/ASCIISTLGeometryImporterItemProvider.java +++ b/org.eclipse.january.geometry.model.edit/src/org/eclipse/january/geometry/provider/ASCIISTLGeometryImporterItemProvider.java @@ -22,11 +22,11 @@ import org.eclipse.emf.edit.provider.ItemProviderAdapter; import org.eclipse.emf.edit.provider.ViewerNotification; -import org.eclipse.january.geometry.ASCIISTLGeometryImporter; +import org.eclipse.january.geometry.STLGeometryImporter; import org.eclipse.january.geometry.GeometryPackage; /** - * This is the item provider adapter for a {@link org.eclipse.january.geometry.ASCIISTLGeometryImporter} object. + * This is the item provider adapter for a {@link org.eclipse.january.geometry.STLGeometryImporter} object. * * * @generated @@ -129,7 +129,7 @@ public Object getImage(Object object) { */ @Override public String getText(Object object) { - String label = ((ASCIISTLGeometryImporter)object).getDescription(); + String label = ((STLGeometryImporter)object).getDescription(); return label == null || label.length() == 0 ? getString("_UI_ASCIISTLGeometryImporter_type") : getString("_UI_ASCIISTLGeometryImporter_type") + " " + label; @@ -147,7 +147,7 @@ public String getText(Object object) { public void notifyChanged(Notification notification) { updateChildren(notification); - switch (notification.getFeatureID(ASCIISTLGeometryImporter.class)) { + switch (notification.getFeatureID(STLGeometryImporter.class)) { case GeometryPackage.ASCIISTL_GEOMETRY_IMPORTER__FILE_TYPES: case GeometryPackage.ASCIISTL_GEOMETRY_IMPORTER__DESCRIPTION: fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); diff --git a/org.eclipse.january.geometry.model.edit/src/org/eclipse/january/geometry/provider/GeometryItemProviderAdapterFactory.java b/org.eclipse.january.geometry.model.edit/src/org/eclipse/january/geometry/provider/GeometryItemProviderAdapterFactory.java index 954ac6eb..876d4ced 100644 --- a/org.eclipse.january.geometry.model.edit/src/org/eclipse/january/geometry/provider/GeometryItemProviderAdapterFactory.java +++ b/org.eclipse.january.geometry.model.edit/src/org/eclipse/january/geometry/provider/GeometryItemProviderAdapterFactory.java @@ -371,7 +371,7 @@ public Adapter createMaterialAdapter() { } /** - * This keeps track of the one adapter used for all {@link org.eclipse.january.geometry.ASCIISTLGeometryImporter} instances. + * This keeps track of the one adapter used for all {@link org.eclipse.january.geometry.STLGeometryImporter} instances. * * * @generated @@ -379,7 +379,7 @@ public Adapter createMaterialAdapter() { protected ASCIISTLGeometryImporterItemProvider asciistlGeometryImporterItemProvider; /** - * This creates an adapter for a {@link org.eclipse.january.geometry.ASCIISTLGeometryImporter}. + * This creates an adapter for a {@link org.eclipse.january.geometry.STLGeometryImporter}. * * * @generated diff --git a/org.eclipse.january.geometry.model.editor/src/geometry/presentation/GeometryEditor.java b/org.eclipse.january.geometry.model.editor/src/geometry/presentation/GeometryEditor.java index 0d2d76ea..b565e645 100644 --- a/org.eclipse.january.geometry.model.editor/src/geometry/presentation/GeometryEditor.java +++ b/org.eclipse.january.geometry.model.editor/src/geometry/presentation/GeometryEditor.java @@ -154,7 +154,7 @@ import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; -import geometry.provider.GeometryItemProviderAdapterFactory; +import org.eclipse.january.geometry.provider.GeometryItemProviderAdapterFactory; import org.eclipse.ui.actions.WorkspaceModifyOperation; diff --git a/org.eclipse.january.geometry.model.editor/src/geometry/presentation/GeometryModelWizard.java b/org.eclipse.january.geometry.model.editor/src/geometry/presentation/GeometryModelWizard.java index 7345cd26..bc905b9b 100644 --- a/org.eclipse.january.geometry.model.editor/src/geometry/presentation/GeometryModelWizard.java +++ b/org.eclipse.january.geometry.model.editor/src/geometry/presentation/GeometryModelWizard.java @@ -70,7 +70,7 @@ import org.eclipse.ui.part.FileEditorInput; import org.eclipse.ui.part.ISetSelectionTarget; -import geometry.provider.GeometryEditPlugin; +import org.eclipse.january.geometry.provider.GeometryEditPlugin; import org.eclipse.core.runtime.Path; diff --git a/org.eclipse.january.geometry.model.tests/src/geometry/tests/GeometryTests.java b/org.eclipse.january.geometry.model.tests/src/geometry/tests/GeometryTests.java index cf938a02..ed034684 100644 --- a/org.eclipse.january.geometry.model.tests/src/geometry/tests/GeometryTests.java +++ b/org.eclipse.january.geometry.model.tests/src/geometry/tests/GeometryTests.java @@ -36,7 +36,7 @@ public static Test suite() { suite.addTestSuite(CubeTest.class); suite.addTestSuite(CylinderTest.class); suite.addTestSuite(TubeTest.class); - suite.addTestSuite(ASCIISTLGeometryImporterTest.class); + suite.addTestSuite(STLGeometryImporterTest.class); return suite; } diff --git a/org.eclipse.january.geometry.model.tests/src/geometry/tests/ASCIISTLGeometryImporterTest.java b/org.eclipse.january.geometry.model.tests/src/geometry/tests/STLGeometryImporterTest.java similarity index 81% rename from org.eclipse.january.geometry.model.tests/src/geometry/tests/ASCIISTLGeometryImporterTest.java rename to org.eclipse.january.geometry.model.tests/src/geometry/tests/STLGeometryImporterTest.java index 2ec17a92..5e7fef70 100644 --- a/org.eclipse.january.geometry.model.tests/src/geometry/tests/ASCIISTLGeometryImporterTest.java +++ b/org.eclipse.january.geometry.model.tests/src/geometry/tests/STLGeometryImporterTest.java @@ -2,7 +2,7 @@ */ package geometry.tests; -import org.eclipse.january.geometry.ASCIISTLGeometryImporter; +import org.eclipse.january.geometry.STLGeometryImporter; import org.eclipse.january.geometry.GeometryFactory; import junit.framework.TestCase; @@ -21,7 +21,7 @@ *

* @generated */ -public class ASCIISTLGeometryImporterTest extends TestCase { +public class STLGeometryImporterTest extends TestCase { /** * The fixture for this ASCIISTL Geometry Importer test case. @@ -29,7 +29,7 @@ public class ASCIISTLGeometryImporterTest extends TestCase { * * @generated */ - protected ASCIISTLGeometryImporter fixture = null; + protected STLGeometryImporter fixture = null; /** * @@ -37,7 +37,7 @@ public class ASCIISTLGeometryImporterTest extends TestCase { * @generated */ public static void main(String[] args) { - TestRunner.run(ASCIISTLGeometryImporterTest.class); + TestRunner.run(STLGeometryImporterTest.class); } /** @@ -46,7 +46,7 @@ public static void main(String[] args) { * * @generated */ - public ASCIISTLGeometryImporterTest(String name) { + public STLGeometryImporterTest(String name) { super(name); } @@ -56,7 +56,7 @@ public ASCIISTLGeometryImporterTest(String name) { * * @generated */ - protected void setFixture(ASCIISTLGeometryImporter fixture) { + protected void setFixture(STLGeometryImporter fixture) { this.fixture = fixture; } @@ -66,7 +66,7 @@ protected void setFixture(ASCIISTLGeometryImporter fixture) { * * @generated */ - protected ASCIISTLGeometryImporter getFixture() { + protected STLGeometryImporter getFixture() { return fixture; } diff --git a/org.eclipse.january.geometry.model/model/geometry.ecore b/org.eclipse.january.geometry.model/model/geometry.ecore index 3df9ff27..44b2550a 100644 --- a/org.eclipse.january.geometry.model/model/geometry.ecore +++ b/org.eclipse.january.geometry.model/model/geometry.ecore @@ -256,7 +256,7 @@
- +
diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/GeometryFactory.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/GeometryFactory.java index 9aa34511..53dc855d 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/GeometryFactory.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/GeometryFactory.java @@ -145,7 +145,7 @@ public interface GeometryFactory extends EFactory { * @return a new object of class 'ASCIISTL Geometry Importer'. * @generated */ - ASCIISTLGeometryImporter createASCIISTLGeometryImporter(); + STLGeometryImporter createASCIISTLGeometryImporter(); /** * Returns the package supported by this factory. diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/GeometryPackage.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/GeometryPackage.java index 70bf7f32..85fda885 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/GeometryPackage.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/GeometryPackage.java @@ -2153,10 +2153,10 @@ public interface GeometryPackage extends EPackage { int IGEOMETRY_IMPORTER_OPERATION_COUNT = 1; /** - * The meta object id for the '{@link org.eclipse.january.geometry.impl.ASCIISTLGeometryImporterImpl ASCIISTL Geometry Importer}' class. + * The meta object id for the '{@link org.eclipse.january.geometry.impl.STLGeometryImporterImpl ASCIISTL Geometry Importer}' class. * * - * @see org.eclipse.january.geometry.impl.ASCIISTLGeometryImporterImpl + * @see org.eclipse.january.geometry.impl.STLGeometryImporterImpl * @see org.eclipse.january.geometry.impl.GeometryPackageImpl#getASCIISTLGeometryImporter() * @generated */ @@ -2721,11 +2721,11 @@ public interface GeometryPackage extends EPackage { EOperation getIGeometryImporter__Load__Path(); /** - * Returns the meta object for class '{@link org.eclipse.january.geometry.ASCIISTLGeometryImporter ASCIISTL Geometry Importer}'. + * Returns the meta object for class '{@link org.eclipse.january.geometry.STLGeometryImporter ASCIISTL Geometry Importer}'. * * * @return the meta object for class 'ASCIISTL Geometry Importer'. - * @see org.eclipse.january.geometry.ASCIISTLGeometryImporter + * @see org.eclipse.january.geometry.STLGeometryImporter * @generated */ EClass getASCIISTLGeometryImporter(); @@ -3182,10 +3182,10 @@ interface Literals { EOperation IGEOMETRY_IMPORTER___LOAD__PATH = eINSTANCE.getIGeometryImporter__Load__Path(); /** - * The meta object literal for the '{@link org.eclipse.january.geometry.impl.ASCIISTLGeometryImporterImpl ASCIISTL Geometry Importer}' class. + * The meta object literal for the '{@link org.eclipse.january.geometry.impl.STLGeometryImporterImpl ASCIISTL Geometry Importer}' class. * * - * @see org.eclipse.january.geometry.impl.ASCIISTLGeometryImporterImpl + * @see org.eclipse.january.geometry.impl.STLGeometryImporterImpl * @see org.eclipse.january.geometry.impl.GeometryPackageImpl#getASCIISTLGeometryImporter() * @generated */ diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/ASCIISTLGeometryImporter.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/STLGeometryImporter.java similarity index 84% rename from org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/ASCIISTLGeometryImporter.java rename to org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/STLGeometryImporter.java index 4711c43e..76929cd5 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/ASCIISTLGeometryImporter.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/STLGeometryImporter.java @@ -17,5 +17,5 @@ * @model * @generated */ -public interface ASCIISTLGeometryImporter extends IGeometryImporter { +public interface STLGeometryImporter extends IGeometryImporter { } // ASCIISTLGeometryImporter diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/GeometryFactoryImpl.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/GeometryFactoryImpl.java index 2e42670f..65331330 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/GeometryFactoryImpl.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/GeometryFactoryImpl.java @@ -247,8 +247,8 @@ public Material createMaterial() { * * @generated */ - public ASCIISTLGeometryImporter createASCIISTLGeometryImporter() { - ASCIISTLGeometryImporterImpl asciistlGeometryImporter = new ASCIISTLGeometryImporterImpl(); + public STLGeometryImporter createASCIISTLGeometryImporter() { + STLGeometryImporterImpl asciistlGeometryImporter = new STLGeometryImporterImpl(); return asciistlGeometryImporter; } diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/GeometryPackageImpl.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/GeometryPackageImpl.java index 91f1f149..2d5610ce 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/GeometryPackageImpl.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/GeometryPackageImpl.java @@ -13,7 +13,7 @@ import org.eclipse.emf.ecore.impl.EPackageImpl; -import org.eclipse.january.geometry.ASCIISTLGeometryImporter; +import org.eclipse.january.geometry.STLGeometryImporter; import org.eclipse.january.geometry.Complement; import org.eclipse.january.geometry.Cube; import org.eclipse.january.geometry.Cylinder; @@ -895,7 +895,7 @@ public void initializePackageContents() { op = initEOperation(getIGeometryImporter__Load__Path(), this.getGeometry(), "load", 0, 1, IS_UNIQUE, IS_ORDERED); addEParameter(op, this.getPath(), "path", 0, 1, IS_UNIQUE, IS_ORDERED); - initEClass(asciistlGeometryImporterEClass, ASCIISTLGeometryImporter.class, "ASCIISTLGeometryImporter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEClass(asciistlGeometryImporterEClass, STLGeometryImporter.class, "ASCIISTLGeometryImporter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); // Initialize data types initEDataType(pathEDataType, Path.class, "Path", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS); diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/ASCIISTLGeometryImporterImpl.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/STLGeometryImporterImpl.java similarity index 54% rename from org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/ASCIISTLGeometryImporterImpl.java rename to org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/STLGeometryImporterImpl.java index 9f91c86f..38b6f713 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/ASCIISTLGeometryImporterImpl.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/impl/STLGeometryImporterImpl.java @@ -2,8 +2,11 @@ */ package org.eclipse.january.geometry.impl; +import java.io.IOException; import java.lang.reflect.InvocationTargetException; - +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.file.Files; import java.nio.file.Path; import java.util.Collection; @@ -11,16 +14,27 @@ import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.util.EList; - +import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EClass; - +import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; - +import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.util.EDataTypeUniqueEList; -import org.eclipse.january.geometry.ASCIISTLGeometryImporter; +import org.eclipse.january.geometry.STLGeometryImporter; +import org.eclipse.january.geometry.Shape; +import org.eclipse.january.geometry.Triangle; +import org.eclipse.january.geometry.Vertex; +import org.eclipse.xtext.resource.XtextResource; +import org.eclipse.xtext.resource.XtextResourceSet; + +import com.google.inject.Injector; + +import xtext.STLStandaloneSetup; + import org.eclipse.january.geometry.Geometry; +import org.eclipse.january.geometry.GeometryFactory; import org.eclipse.january.geometry.GeometryPackage; /** @@ -31,13 +45,13 @@ * The following features are implemented: *

*
    - *
  • {@link org.eclipse.january.geometry.impl.ASCIISTLGeometryImporterImpl#getFileTypes File Types}
  • - *
  • {@link org.eclipse.january.geometry.impl.ASCIISTLGeometryImporterImpl#getDescription Description}
  • + *
  • {@link org.eclipse.january.geometry.impl.STLGeometryImporterImpl#getFileTypes File Types}
  • + *
  • {@link org.eclipse.january.geometry.impl.STLGeometryImporterImpl#getDescription Description}
  • *
* * @generated */ -public class ASCIISTLGeometryImporterImpl extends MinimalEObjectImpl.Container implements ASCIISTLGeometryImporter { +public class STLGeometryImporterImpl extends MinimalEObjectImpl.Container implements STLGeometryImporter { /** * The cached value of the '{@link #getFileTypes() File Types}' attribute list. * @@ -73,7 +87,7 @@ public class ASCIISTLGeometryImporterImpl extends MinimalEObjectImpl.Container i * * @generated */ - protected ASCIISTLGeometryImporterImpl() { + protected STLGeometryImporterImpl() { super(); } @@ -122,14 +136,106 @@ public void setDescription(String newDescription) { /** * + * Returns the geometry from the STL file given by the specified path * - * @generated + * @generated NOT */ + @Override public Geometry load(Path path) { - // TODO: implement this method - // Ensure that you remove @generated or mark it @generated NOT - throw new UnsupportedOperationException(); + // Geometry to return + Geometry geometry = null; + + + Injector injector = new STLStandaloneSetup().createInjectorAndDoEMFRegistration(); + XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class); + resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL, Boolean.TRUE); + Resource resource = resourceSet.getResource(URI.createFileURI(path.toFile().getAbsolutePath()), true); + + // Check to see if returned contents contain a valid geometry. If not, then the file might be + // a binary format + + // Get the contents of the resource + EList contents = resource.getContents(); + + // If they contents are valid, get the first element + if(contents != null && !contents.isEmpty()) { + Geometry g = (Geometry) contents.get(0); + + // If the geometry has no nodes, or the shape has no triangles, try loading from binary + if (g.getNodes().isEmpty() || ( (Shape)g.getNodes().get(0)).getTriangles().isEmpty()) { + + geometry = loadBinary(path); + } else { + // Otherwise, return this geometry + geometry = g; + } + } + + // Return the geometry + return geometry; } + + /** + * Loads a binary STL file from the given path into a geometry instance. + * @param path The path to read the file from + * @return Returns the geometry given from the binary file + * @generated NOT + */ + private Geometry loadBinary(Path path){ + // Create a new geometry and add the new shape + Geometry geometry = GeometryFactory.eINSTANCE.createGeometry(); + geometry.setName(path.getFileName().toString()); + Shape shape = GeometryFactory.eINSTANCE.createShape(); + geometry.getNodes().add(shape); + + // Can throw IO exceptions + try { + // Read in the file's bytes, convert to buffer + byte[] fileBytes = Files.readAllBytes(path); + ByteBuffer buffer = ByteBuffer.wrap(fileBytes, 80, fileBytes.length - 80); + buffer.order(ByteOrder.LITTLE_ENDIAN); + + // Get the number of triangles + int triNum = buffer.getInt(); + + // Read in all the triangles + for (int i = 0; i < triNum; i++) { + // Create a triangle + Triangle triangle = GeometryFactory.eINSTANCE.createTriangle(); + + // Create a normal for the triangle + Vertex normal = GeometryFactory.eINSTANCE.createVertex(); + normal.setX(buffer.getFloat()); + normal.setY(buffer.getFloat()); + normal.setZ(buffer.getFloat()); + + triangle.setNormal(normal); + + // Create the triangle vertices + for(int j=0; j<3; j++) { + Vertex vertex = GeometryFactory.eINSTANCE.createVertex(); + vertex.setX(buffer.getFloat()); + vertex.setY(buffer.getFloat()); + vertex.setZ(buffer.getFloat()); + + triangle.getVertices().add(vertex); + } + + // Not used- sometimes gives color information or texture info + int attributeByteCount = buffer.getShort(); + + // Add this triangle to the list + shape.getTriangles().add(triangle); + + } + } catch (IOException e) { + // Put default error data in + + } + + // Return the triangles array list + return geometry; +} /** * diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/util/GeometryAdapterFactory.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/util/GeometryAdapterFactory.java index b7289a5f..e9a76462 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/util/GeometryAdapterFactory.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/util/GeometryAdapterFactory.java @@ -128,7 +128,7 @@ public Adapter caseIGeometryImporter(IGeometryImporter object) { return createIGeometryImporterAdapter(); } @Override - public Adapter caseASCIISTLGeometryImporter(ASCIISTLGeometryImporter object) { + public Adapter caseASCIISTLGeometryImporter(STLGeometryImporter object) { return createASCIISTLGeometryImporterAdapter(); } @Override @@ -362,13 +362,13 @@ public Adapter createIGeometryImporterAdapter() { } /** - * Creates a new adapter for an object of class '{@link org.eclipse.january.geometry.ASCIISTLGeometryImporter ASCIISTL Geometry Importer}'. + * Creates a new adapter for an object of class '{@link org.eclipse.january.geometry.STLGeometryImporter ASCIISTL Geometry Importer}'. * * This default implementation returns null so that we can easily ignore cases; * it's useful to ignore a case when inheritance will catch all the cases anyway. * * @return the new adapter. - * @see org.eclipse.january.geometry.ASCIISTLGeometryImporter + * @see org.eclipse.january.geometry.STLGeometryImporter * @generated */ public Adapter createASCIISTLGeometryImporterAdapter() { diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/util/GeometrySwitch.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/util/GeometrySwitch.java index 095c9839..899adf9a 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/util/GeometrySwitch.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/util/GeometrySwitch.java @@ -174,7 +174,7 @@ protected T doSwitch(int classifierID, EObject theEObject) { return result; } case GeometryPackage.ASCIISTL_GEOMETRY_IMPORTER: { - ASCIISTLGeometryImporter asciistlGeometryImporter = (ASCIISTLGeometryImporter)theEObject; + STLGeometryImporter asciistlGeometryImporter = (STLGeometryImporter)theEObject; T result = caseASCIISTLGeometryImporter(asciistlGeometryImporter); if (result == null) result = caseIGeometryImporter(asciistlGeometryImporter); if (result == null) result = defaultCase(theEObject); @@ -420,7 +420,7 @@ public T caseIGeometryImporter(IGeometryImporter object) { * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ - public T caseASCIISTLGeometryImporter(ASCIISTLGeometryImporter object) { + public T caseASCIISTLGeometryImporter(STLGeometryImporter object) { return null; } diff --git a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/validation/ASCIISTLGeometryImporterValidator.java b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/validation/ASCIISTLGeometryImporterValidator.java index 9e3790dc..2355d5d9 100644 --- a/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/validation/ASCIISTLGeometryImporterValidator.java +++ b/org.eclipse.january.geometry.model/src/org/eclipse/january/geometry/validation/ASCIISTLGeometryImporterValidator.java @@ -6,7 +6,7 @@ /** - * A sample validator interface for {@link org.eclipse.january.geometry.ASCIISTLGeometryImporter}. + * A sample validator interface for {@link org.eclipse.january.geometry.STLGeometryImporter}. * This doesn't really do anything, and it's not a real EMF artifact. * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended. * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false. From 3a1d472b25873d1182ff004143ac55b4d1cf4247 Mon Sep 17 00:00:00 2001 From: Kasper Gammeltoft Date: Fri, 1 Jul 2016 15:41:37 -0400 Subject: [PATCH 3/3] Added test implementation for STLGeometryImporterTester Signed-off-by: Kasper Gammeltoft --- .../tests/STLGeometryImporterTest.java | 136 +++++++++++++++++- .../geometry/tests/files/binaryExample.stl | Bin 0 -> 684 bytes .../src/geometry/tests/files/cube.stl | 86 +++++++++++ 3 files changed, 216 insertions(+), 6 deletions(-) create mode 100644 org.eclipse.january.geometry.model.tests/src/geometry/tests/files/binaryExample.stl create mode 100644 org.eclipse.january.geometry.model.tests/src/geometry/tests/files/cube.stl diff --git a/org.eclipse.january.geometry.model.tests/src/geometry/tests/STLGeometryImporterTest.java b/org.eclipse.january.geometry.model.tests/src/geometry/tests/STLGeometryImporterTest.java index 5e7fef70..107cde7c 100644 --- a/org.eclipse.january.geometry.model.tests/src/geometry/tests/STLGeometryImporterTest.java +++ b/org.eclipse.january.geometry.model.tests/src/geometry/tests/STLGeometryImporterTest.java @@ -3,6 +3,15 @@ package geometry.tests; import org.eclipse.january.geometry.STLGeometryImporter; +import org.eclipse.january.geometry.Shape; +import org.eclipse.january.geometry.Triangle; +import org.eclipse.january.geometry.Vertex; + +import java.nio.file.FileSystems; +import java.nio.file.Path; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.january.geometry.Geometry; import org.eclipse.january.geometry.GeometryFactory; import junit.framework.TestCase; @@ -22,6 +31,8 @@ * @generated */ public class STLGeometryImporterTest extends TestCase { + + private final double PARSE_ERROR = 0.0; /** * The fixture for this ASCIISTL Geometry Importer test case. @@ -93,16 +104,129 @@ protected void tearDown() throws Exception { } /** - * Tests the '{@link org.eclipse.january.geometry.IGeometryImporter#load(java.nio.file.Path) Load}' operation. + * Tests the '{@link geometry.IGeometryImporter#load(java.nio.file.Path) Load}' operation. * * - * @see org.eclipse.january.geometry.IGeometryImporter#load(java.nio.file.Path) - * @generated + * @see geometry.IGeometryImporter#load(java.nio.file.Path) + * @generated NOT */ public void testLoad__Path() { - // TODO: implement this operation test method - // Ensure that you remove @generated or mark it @generated NOT - fail(); + Path asciiSTL = FileSystems.getDefault().getPath("src", "geometry", "tests", "files", "cube.stl"); + Geometry stlGeom = fixture.load(asciiSTL); + + testGeometry(stlGeom); + + + Path binarySTL = FileSystems.getDefault().getPath("src", "geometry", "tests", "files", "binaryExample.stl"); + + Geometry binaryStlGeom = fixture.load(binarySTL); + + testGeometry(binaryStlGeom); + + } + + /** + * Tests the given geometry against the data in the files cube.stl and binaryExample.stl + * @param g The geometry to test + * @generated NOT + */ + private void testGeometry(Geometry g) { + // Make sure it successfully loaded the shape + assertNotNull(g.getNodes()); + assertEquals(1, g.getNodes().size()); + + // Get the shape + Shape shape = (Shape)g.getNodes().get(0); + + // Make sure it imports the triangles successfully + assertNotNull(shape.getTriangles()); + assertEquals(12, shape.getTriangles().size()); + + // Get the triangle list + EList triangles = shape.getTriangles(); + + // Test the first triangle + Triangle t1 = triangles.get(0); + testVertex(t1.getNormal(), 0.0, 0.0, 1.0); + + // Test the vertices + assertEquals(3, t1.getVertices().size()); + Vertex v11 = t1.getVertices().get(0); + testVertex(v11, 5.0, 5.0, 5.0); + Vertex v12 = t1.getVertices().get(1); + testVertex(v12, -5.0, 5.0, 5.0); + Vertex v13 = t1.getVertices().get(2); + testVertex(v13, 5.0, -5.0, 5.0); + + // Test the second triangle + Triangle t2 = triangles.get(1); + testVertex(t2.getNormal(), 0.0, 0.0, 1.0); + assertEquals(3, t2.getVertices().size()); + Vertex v21 = t2.getVertices().get(0); + testVertex(v21, 5.0, -5.0, 5.0); + Vertex v22 = t2.getVertices().get(1); + testVertex(v22, -5.0, 5.0, 5.0); + Vertex v23 = t2.getVertices().get(2); + testVertex(v23, -5.0, -5.0, 5.0); + + // Test the third triangle + Triangle t3 = triangles.get(2); + testVertex(t3.getNormal(), 0.0, 0.0, -1.0); + assertEquals(3, t3.getVertices().size()); + Vertex v31 = t3.getVertices().get(0); + testVertex(v31, 5.0, -5.0, -5.0); + Vertex v32 = t3.getVertices().get(1); + testVertex(v32, -5.0, -5.0, -5.0); + Vertex v33 = t3.getVertices().get(2); + testVertex(v33, 5.0, 5.0, -5.0); + + // Test the fourth triangle + Triangle t4 = triangles.get(3); + testVertex(t4.getNormal(), 0.0, 0.0, -1.0); + assertEquals(3, t4.getVertices().size()); + Vertex v41 = t4.getVertices().get(0); + testVertex(v41, 5.0, 5.0, -5.0); + Vertex v42 = t4.getVertices().get(1); + testVertex(v42, -5.0, -5.0, -5.0); + Vertex v43 = t4.getVertices().get(2); + testVertex(v43, -5.0, 5.0, -5.0); + + // Test the fifth triangle + Triangle t5 = triangles.get(4); + testVertex(t5.getNormal(), 0.0, -1.0, 0.0); + assertEquals(3, t5.getVertices().size()); + Vertex v51 = t5.getVertices().get(0); + testVertex(v51, -5.0, -5.0, 5.0); + Vertex v52 = t5.getVertices().get(1); + testVertex(v52, -5.0, -5.0, -5.0); + Vertex v53 = t5.getVertices().get(2); + testVertex(v53, 5.0, -5.0, 5.0); + + // Test the last triangle + Triangle t12 = triangles.get(11); + testVertex(t12.getNormal(), 1.0, 0.0, 0.0); + + assertEquals(3, t12.getVertices().size()); + Vertex v121 = t12.getVertices().get(0); + testVertex(v121, 5.0, 5.0, 5.0); + Vertex v122 = t12.getVertices().get(1); + testVertex(v122, 5.0, -5.0, -5.0); + Vertex v123 = t12.getVertices().get(2); + testVertex(v123, 5.0, 5.0, -5.0); + } + + /** + * Tests the given vertex for the x, y, and z value it should have + * @param v The vertex to test + * @param x The x value to test against + * @param y The y value to test against + * @param z The z value to test against + */ + private void testVertex(Vertex v, double x, double y, double z) { + assertEquals(x, v.getX(), PARSE_ERROR); + assertEquals(y, v.getY(), PARSE_ERROR); + assertEquals(z, v.getZ(), PARSE_ERROR); +} } //ASCIISTLGeometryImporterTest diff --git a/org.eclipse.january.geometry.model.tests/src/geometry/tests/files/binaryExample.stl b/org.eclipse.january.geometry.model.tests/src/geometry/tests/files/binaryExample.stl new file mode 100644 index 0000000000000000000000000000000000000000..4e753392c2a6d36b0941bd35715723665ab9e55b GIT binary patch literal 684 zcmb`E>kY#&2!t7+t9XVo8l!ZRFk0Z^bI+;TUq!OOa3A!aJySgLoYCqwOwRHyvF?2%LX_VKoC^I*ZB68) zT;k4gVa5kRNM@VQT!_r3>-u2M;_#C4BWN3F8;MlNw`mwqdpC`w-T Jv%gopW}KD~o5=tG literal 0 HcmV?d00001 diff --git a/org.eclipse.january.geometry.model.tests/src/geometry/tests/files/cube.stl b/org.eclipse.january.geometry.model.tests/src/geometry/tests/files/cube.stl new file mode 100644 index 00000000..866035bd --- /dev/null +++ b/org.eclipse.january.geometry.model.tests/src/geometry/tests/files/cube.stl @@ -0,0 +1,86 @@ +solid Body1 + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex 5.000000e+00 5.000000e+00 5.000000e+00 + vertex -5.000000e+00 5.000000e+00 5.000000e+00 + vertex 5.000000e+00 -5.000000e+00 5.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex 5.000000e+00 -5.000000e+00 5.000000e+00 + vertex -5.000000e+00 5.000000e+00 5.000000e+00 + vertex -5.000000e+00 -5.000000e+00 5.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex 5.000000e+00 -5.000000e+00 -5.000000e+00 + vertex -5.000000e+00 -5.000000e+00 -5.000000e+00 + vertex 5.000000e+00 5.000000e+00 -5.000000e+00 + endloop + endfacet + facet normal -0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex 5.000000e+00 5.000000e+00 -5.000000e+00 + vertex -5.000000e+00 -5.000000e+00 -5.000000e+00 + vertex -5.000000e+00 5.000000e+00 -5.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 -1.000000e+00 0.000000e+00 + outer loop + vertex -5.000000e+00 -5.000000e+00 5.000000e+00 + vertex -5.000000e+00 -5.000000e+00 -5.000000e+00 + vertex 5.000000e+00 -5.000000e+00 5.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 -1.000000e+00 -0.000000e+00 + outer loop + vertex 5.000000e+00 -5.000000e+00 5.000000e+00 + vertex -5.000000e+00 -5.000000e+00 -5.000000e+00 + vertex 5.000000e+00 -5.000000e+00 -5.000000e+00 + endloop + endfacet + facet normal -1.000000e+00 -0.000000e+00 -0.000000e+00 + outer loop + vertex -5.000000e+00 5.000000e+00 5.000000e+00 + vertex -5.000000e+00 5.000000e+00 -5.000000e+00 + vertex -5.000000e+00 -5.000000e+00 5.000000e+00 + endloop + endfacet + facet normal -1.000000e+00 -0.000000e+00 -0.000000e+00 + outer loop + vertex -5.000000e+00 -5.000000e+00 5.000000e+00 + vertex -5.000000e+00 5.000000e+00 -5.000000e+00 + vertex -5.000000e+00 -5.000000e+00 -5.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 1.000000e+00 0.000000e+00 + outer loop + vertex 5.000000e+00 5.000000e+00 5.000000e+00 + vertex 5.000000e+00 5.000000e+00 -5.000000e+00 + vertex -5.000000e+00 5.000000e+00 5.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 1.000000e+00 0.000000e+00 + outer loop + vertex -5.000000e+00 5.000000e+00 5.000000e+00 + vertex 5.000000e+00 5.000000e+00 -5.000000e+00 + vertex -5.000000e+00 5.000000e+00 -5.000000e+00 + endloop + endfacet + facet normal 1.000000e+00 -0.000000e+00 0.000000e+00 + outer loop + vertex 5.000000e+00 -5.000000e+00 5.000000e+00 + vertex 5.000000e+00 -5.000000e+00 -5.000000e+00 + vertex 5.000000e+00 5.000000e+00 5.000000e+00 + endloop + endfacet + facet normal 1.000000e+00 -0.000000e+00 0.000000e+00 + outer loop + vertex 5.000000e+00 5.000000e+00 5.000000e+00 + vertex 5.000000e+00 -5.000000e+00 -5.000000e+00 + vertex 5.000000e+00 5.000000e+00 -5.000000e+00 + endloop + endfacet +endsolid Body1 \ No newline at end of file