diff --git a/org.fortiss.af3.component.ui/src/org/fortiss/af3/component/ui/properties/.ratings b/org.fortiss.af3.component.ui/src/org/fortiss/af3/component/ui/properties/.ratings index afe880f56399fba3a68e943e04175d260713e5bf..2bad1a1baa4fa6380065622d59a668913dfeb68c 100644 --- a/org.fortiss.af3.component.ui/src/org/fortiss/af3/component/ui/properties/.ratings +++ b/org.fortiss.af3.component.ui/src/org/fortiss/af3/component/ui/properties/.ratings @@ -1,5 +1,5 @@ ComponentSpecificationPropertySection.java fb5b6d82090f7ae063a8876b421529075d072939 GREEN PortDataPropagation.java cf1d76c93964e6c0bb947c0aea51666628260008 GREEN PortInitValueSection.java ba26a87fbf4d0bce69e57d108b9939cfa5ab8fa8 GREEN -PortSpecificationPropertySection.java 225fbc0c6dab88e48da247321f870bebfdbd65f8 GREEN +PortSpecificationPropertySection.java d06e46ca180a2d6af292acbbfee9af66d7a632c3 GREEN TypeLabelProvider.java 5b0fcced122681125f7df55469ea19b3685eb8bd GREEN diff --git a/org.fortiss.af3.component.ui/src/org/fortiss/af3/component/ui/properties/PortSpecificationPropertySection.java b/org.fortiss.af3.component.ui/src/org/fortiss/af3/component/ui/properties/PortSpecificationPropertySection.java index 225fbc0c6dab88e48da247321f870bebfdbd65f8..d06e46ca180a2d6af292acbbfee9af66d7a632c3 100644 --- a/org.fortiss.af3.component.ui/src/org/fortiss/af3/component/ui/properties/PortSpecificationPropertySection.java +++ b/org.fortiss.af3.component.ui/src/org/fortiss/af3/component/ui/properties/PortSpecificationPropertySection.java @@ -51,10 +51,9 @@ import org.fortiss.af3.component.model.Channel; import org.fortiss.af3.component.model.Port; import org.fortiss.af3.component.model.PortSpecification; import org.fortiss.af3.component.ui.AF3ComponentUIActivator; -import org.fortiss.af3.expression.model.DataDictionary; +import org.fortiss.af3.expression.model.definitions.TypeDefinition; +import org.fortiss.af3.expression.model.types.TDefinedType; import org.fortiss.af3.expression.model.types.TInt; -import org.fortiss.af3.expression.ui.editor.DataDictionaryEditorGUI; -import org.fortiss.af3.expression.utils.DataDictionaryUtils; import org.fortiss.af3.expression.utils.ExpressionUtils; import org.fortiss.af3.project.model.typesystem.IType; import org.fortiss.tooling.base.model.element.IModelElementSpecification; @@ -127,10 +126,10 @@ public final class PortSpecificationPropertySection extends PropertySectionBase } }); - goToTypeButton = getWidgetFactory().createButton(composite, "Go to type", SWT.NONE); + goToTypeButton = getWidgetFactory().createButton(composite, "Go to type", SWT.PUSH); createFormEntry(goToTypeButton, ""); - GridDataFactory.defaultsFor(goToTypeButton).hint("Go to type".length() * 10, SWT.DEFAULT) - .align(SWT.BEGINNING, SWT.BEGINNING).applyTo(goToTypeButton); + GridDataFactory.defaultsFor(goToTypeButton).align(SWT.BEGINNING, SWT.BEGINNING) + .applyTo(goToTypeButton); goToTypeButton.addSelectionListener(new SelectionListener() { @Override @@ -148,6 +147,7 @@ public final class PortSpecificationPropertySection extends PropertySectionBase @Override public void selectionChanged(SelectionChangedEvent event) { if(userInput) { + typeSelectionChangeHandler(); topLevel.runAsCommand(new Runnable() { @Override public void run() { @@ -170,6 +170,9 @@ public final class PortSpecificationPropertySection extends PropertySectionBase @Override public void modifyText(ModifyEvent e) { + if(!(spec.getType() instanceof TInt)) { + return; + } topLevel.runAsCommand(new Runnable() { /** {@inheritDoc} */ @Override @@ -186,6 +189,9 @@ public final class PortSpecificationPropertySection extends PropertySectionBase @Override public void modifyText(ModifyEvent e) { + if(!(spec.getType() instanceof TInt)) { + return; + } topLevel.runAsCommand(new Runnable() { /** {@inheritDoc} */ @Override @@ -204,11 +210,9 @@ public final class PortSpecificationPropertySection extends PropertySectionBase private void goToType() { IStructuredSelection selection = (IStructuredSelection)typeComboViewer.getSelection(); IType selectedType = (IType)selection.getFirstElement(); - if(!isBuiltInType(selectedType)) { - DataDictionary dd = DataDictionaryUtils.findDataDictionary(port); - goToTypeButton.setEnabled(!hasReadOnlyBehaviorSpecification(port.getComponent())); - IModelEditorBindingService.getInstance().openInEditor(dd); - DataDictionaryEditorGUI.setFilteredTree(selectedType.toString()); + if(selectedType instanceof TDefinedType) { + TypeDefinition def = ((TDefinedType)selectedType).getDef(); + IModelEditorBindingService.getInstance().openInEditor(def); } } @@ -312,7 +316,12 @@ public final class PortSpecificationPropertySection extends PropertySectionBase /** need to disable for non-dictionary types */ private void refreshGotoTypeButton() { - goToTypeButton.setEnabled(!isBuiltInType(spec.getType())); + boolean typeHasDefinition = false; + if(spec.getType() instanceof TDefinedType) { + TDefinedType definedType = (TDefinedType)spec.getType(); + typeHasDefinition = definedType.getDef() != null; + } + goToTypeButton.setEnabled(typeHasDefinition); } /** enables the Bound controls */ @@ -365,13 +374,6 @@ public final class PortSpecificationPropertySection extends PropertySectionBase .compareToIgnoreCase(ExpressionUtils.getNameForType(e2)); } - /** returns whether the type is a built in type or a dictionary-type */ - private static boolean isBuiltInType(IType selectedType) { - return selectedType.getTypeClassName() == "int" || - selectedType.getTypeClassName() == "double" || - selectedType.getTypeClassName() == "boolean"; - } - /** {@inheritDoc} */ @Override public PortSpecification getPortSpecification() { diff --git a/org.fortiss.af3.expression.ui/src/org/fortiss/af3/expression/ui/editor/fx/.ratings b/org.fortiss.af3.expression.ui/src/org/fortiss/af3/expression/ui/editor/fx/.ratings index c263ef556cc4df0ea7a84b59ad9c0debc2344768..5f9e718606c43ab82727486e30e6423fcc3c9e47 100644 --- a/org.fortiss.af3.expression.ui/src/org/fortiss/af3/expression/ui/editor/fx/.ratings +++ b/org.fortiss.af3.expression.ui/src/org/fortiss/af3/expression/ui/editor/fx/.ratings @@ -1,4 +1,4 @@ -DataDictionaryFXEditor.java 225c54161a107a8f17caa1f3ffdaee607ba19cfd GREEN +DataDictionaryFXEditor.java fddc877b46e39520547ccaf7decd309b6da71698 GREEN DataDictionaryFXEditorBinding.java 02fd7a3dfde670b9cfd09a783c090833444c418d GREEN DataDictionaryFXEditorContentProvider.java 74a878b7462e2fcae3df18a2162fa3b5aa737acc GREEN DataDictionaryFXEditorUIProvider.java 8afb90b45d455adf838e80bbafc96c4fa2903d0a GREEN diff --git a/org.fortiss.af3.expression.ui/src/org/fortiss/af3/expression/ui/editor/fx/DataDictionaryFXEditor.java b/org.fortiss.af3.expression.ui/src/org/fortiss/af3/expression/ui/editor/fx/DataDictionaryFXEditor.java index 225c54161a107a8f17caa1f3ffdaee607ba19cfd..fddc877b46e39520547ccaf7decd309b6da71698 100644 --- a/org.fortiss.af3.expression.ui/src/org/fortiss/af3/expression/ui/editor/fx/DataDictionaryFXEditor.java +++ b/org.fortiss.af3.expression.ui/src/org/fortiss/af3/expression/ui/editor/fx/DataDictionaryFXEditor.java @@ -20,6 +20,7 @@ import java.util.List; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.StructuredSelection; import org.fortiss.af3.expression.model.DataDictionary; import org.fortiss.af3.expression.model.definitions.Enumeration; import org.fortiss.af3.expression.model.definitions.Structure; @@ -27,10 +28,14 @@ import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeCon import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeTableUIProviderBase; import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeTableViewer; import org.fortiss.tooling.kernel.ui.extension.base.FXEditorBase; +import org.fortiss.tooling.kernel.ui.service.INavigatorService; import org.fortiss.tooling.kernel.utils.KernelServiceBasedModelListenerBase; import javafx.scene.Parent; import javafx.scene.control.TextField; +import javafx.scene.control.TreeItem; +import javafx.scene.control.TreeTableView; +import javafx.scene.input.MouseEvent; import javafx.scene.layout.BorderPane; /** @@ -74,12 +79,18 @@ public class DataDictionaryFXEditor extends FXEditorBase }); treeTableViewer = new DynamicTreeTableViewer<>(dd, true, 2, contentProvider, uiProvider); - treeTableViewer.addColumn("Name", 160); + treeTableViewer.addColumn("Name", 300); treeTableViewer.addColumn("Type", 160); - treeTableViewer.addColumn("Comment", 300); + treeTableViewer.addColumn("Comment", 500); + TreeTableView view = treeTableViewer.getControl(); + view.addEventHandler(MouseEvent.MOUSE_CLICKED, e -> { + TreeItem selected = view.getSelectionModel().getSelectedItem(); + INavigatorService.getInstance() + .setCurrentSelection(new StructuredSelection(selected.getValue())); + }); pane.setTop(filterWidget); - pane.setCenter(treeTableViewer.getControl()); + pane.setCenter(view); return pane; } @@ -96,4 +107,11 @@ public class DataDictionaryFXEditor extends FXEditorBase modelListener.unregister(); super.dispose(); } + + /** {@inheritDoc} */ + @Override + public void navigateToFX(EObject element) { + treeTableViewer.navigateTo(element); + INavigatorService.getInstance().setCurrentSelection(new StructuredSelection(element)); + } } diff --git a/org.fortiss.af3.mira.ui/src/org/fortiss/af3/mira/ui/editor/overview/fx/.ratings b/org.fortiss.af3.mira.ui/src/org/fortiss/af3/mira/ui/editor/overview/fx/.ratings index 8b7354495f03072663d26845e3ecd1f9865a3959..c08c9ba9b451be5567cf1ebd67f1fa822ac79630 100644 --- a/org.fortiss.af3.mira.ui/src/org/fortiss/af3/mira/ui/editor/overview/fx/.ratings +++ b/org.fortiss.af3.mira.ui/src/org/fortiss/af3/mira/ui/editor/overview/fx/.ratings @@ -1,4 +1,4 @@ -RequirementsOverviewFXEditor.java a4a8b1d056e4a022f375a2e8874628e03d344795 GREEN +RequirementsOverviewFXEditor.java ba345c1df592f6f51ae955bc6cf54df1d7070349 GREEN RequirementsOverviewFXEditorBinding.java 3346106642d7dbd68e6328e4cbd33f6569c6f6ff GREEN RequirementsOverviewFXEditorContentProvider.java 2f9b6874d6d7063ba2d3acd49f77f36052d75a5b GREEN RequirementsOverviewFXEditorUIProvider.java a475ccac8b19338810ac086994b5258c9306411d GREEN diff --git a/org.fortiss.af3.mira.ui/src/org/fortiss/af3/mira/ui/editor/overview/fx/RequirementsOverviewFXEditor.java b/org.fortiss.af3.mira.ui/src/org/fortiss/af3/mira/ui/editor/overview/fx/RequirementsOverviewFXEditor.java index a4a8b1d056e4a022f375a2e8874628e03d344795..ba345c1df592f6f51ae955bc6cf54df1d7070349 100644 --- a/org.fortiss.af3.mira.ui/src/org/fortiss/af3/mira/ui/editor/overview/fx/RequirementsOverviewFXEditor.java +++ b/org.fortiss.af3.mira.ui/src/org/fortiss/af3/mira/ui/editor/overview/fx/RequirementsOverviewFXEditor.java @@ -22,6 +22,7 @@ import java.util.TreeMap; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.ecore.EObject; +import org.eclipse.jface.viewers.StructuredSelection; import org.fortiss.af3.mira.model.RequirementStatus; import org.fortiss.af3.mira.model.glossary.Glossary; import org.fortiss.tooling.base.model.element.IHierarchicElement; @@ -29,6 +30,7 @@ import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeTab import org.fortiss.tooling.common.ui.javafx.control.treetableview.IDoubleClickHandler; import org.fortiss.tooling.kernel.ui.extension.base.FXEditorBase; import org.fortiss.tooling.kernel.ui.service.IModelEditorBindingService; +import org.fortiss.tooling.kernel.ui.service.INavigatorService; import org.fortiss.tooling.kernel.utils.KernelServiceBasedModelListenerBase; import javafx.scene.Parent; @@ -133,4 +135,13 @@ public class RequirementsOverviewFXEditor extends modelListener.unregister(); super.dispose(); } + + /** {@inheritDoc} */ + @Override + public void navigateToFX(EObject element) { + if(element instanceof IHierarchicElement) { + treeTableViewer.navigateTo((IHierarchicElement)element); + INavigatorService.getInstance().setCurrentSelection(new StructuredSelection(element)); + } + } }