From 24a38d46aa14d761a6b6291db2200e52d1a51acd Mon Sep 17 00:00:00 2001 From: Florian Hoelzl <hoelzl@fortiss.org> Date: Mon, 17 Feb 2020 15:55:19 +0100 Subject: [PATCH] Kernel: JavaFX view for model elements view. Issue-Ref: 3907 Issue-Url: https://af3-developer.fortiss.org/issues/3907 Signed-off-by: Florian Hoelzl <hoelzl@fortiss.org> --- org.fortiss.tooling.kernel.ui/plugin.xml | 7 ++ .../tooling/kernel/ui/internal/views/.ratings | 1 + .../ui/internal/views/LibraryViewFX.java | 81 +++++++++++++++++++ .../tooling/kernel/ui/service/.ratings | 2 +- .../service/IModelElementHandlerService.java | 5 +- 5 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/LibraryViewFX.java diff --git a/org.fortiss.tooling.kernel.ui/plugin.xml b/org.fortiss.tooling.kernel.ui/plugin.xml index f84dd2cda..d0c5e0082 100644 --- a/org.fortiss.tooling.kernel.ui/plugin.xml +++ b/org.fortiss.tooling.kernel.ui/plugin.xml @@ -46,6 +46,13 @@ name="Model Elements" restorable="true"> </view> + <view + class="org.fortiss.tooling.kernel.ui.internal.views.LibraryViewFX" + icon="icons/library.png" + id="org.fortiss.tooling.kernel.model.element.library.fx" + name="Model Elements (FX)" + restorable="true"> + </view> <view allowMultiple="false" class="org.fortiss.tooling.kernel.ui.internal.introspection.KISSViewPart" diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/.ratings b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/.ratings index 75283430c..9e21e2a03 100644 --- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/.ratings +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/.ratings @@ -2,6 +2,7 @@ DoubleClick.java fd00e7737c0bad903433c0adb67dad92220ff451 GREEN GenericNewMenu.java 7e0dd435cb5ca6d4b486235ec17eef3e5c7aa5f6 GREEN LibraryView.java 44107622da7bcf431e1177e462d711646488957f GREEN LibraryViewDragSourceAdapter.java 56ef61b214ef5d6cb5b751791a92158bda0391ec GREEN +LibraryViewFX.java 5d9a95ee3362c9610728d6f9cee33672994640c2 RED LinkWithEditorPartListener.java c5ab74424378e7b158a805c4dd14fc03c8abeded GREEN MarkerViewContentProvider.java 4cb1192baebe21bca951c439c163d0c171512515 GREEN MarkerViewPart.java cbb650271b6877af205421b7cb11f930440a7ef9 GREEN diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/LibraryViewFX.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/LibraryViewFX.java new file mode 100644 index 000000000..5d9a95ee3 --- /dev/null +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/LibraryViewFX.java @@ -0,0 +1,81 @@ +/*-------------------------------------------------------------------------+ +| Copyright 2020 fortiss GmbH | +| | +| Licensed under the Apache License, Version 2.0 (the "License"); | +| you may not use this file except in compliance with the License. | +| You may obtain a copy of the License at | +| | +| http://www.apache.org/licenses/LICENSE-2.0 | +| | +| Unless required by applicable law or agreed to in writing, software | +| distributed under the License is distributed on an "AS IS" BASIS, | +| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | +| See the License for the specific language governing permissions and | +| limitations under the License. | ++--------------------------------------------------------------------------*/ +package org.fortiss.tooling.kernel.ui.internal.views; + +import static java.util.Collections.emptyList; + +import java.util.Collection; + +import org.eclipse.fx.ui.workbench3.FXViewPart; +import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeContentProviderBase; +import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeUIProviderBase; +import org.fortiss.tooling.common.ui.javafx.control.treetableview.DynamicTreeViewer; + +import javafx.scene.Scene; +import javafx.scene.control.TextField; +import javafx.scene.layout.BorderPane; + +/** + * {@link FXViewPart} for showing composable model elements with DND editing support. + * + * @author hoelzl + */ +public final class LibraryViewFX extends FXViewPart { + /** The tree-table viewer. */ + private DynamicTreeViewer<Object> treeViewer; + /** The filter text field if filtering is enabled in content provider. */ + private TextField filterWidget; + + /** {@inheritDoc} */ + @Override + protected Scene createFxScene() { + BorderPane pane = new BorderPane(); + + filterWidget = new TextField(); + filterWidget.textProperty().addListener((obs, oVal, nVal) -> { + // contentProvider.setFilterExpression(nVal); + treeViewer.update(); + }); + + treeViewer = new DynamicTreeViewer<>(new Object(), true, 2, new LibraryContentProvider(), + new LibraryUIProvider()); + + pane.setTop(filterWidget); + pane.setCenter(treeViewer.getControl()); + + return new Scene(pane); + } + + /** {@inheritDoc} */ + @Override + protected void setFxFocus() { + filterWidget.requestFocus(); + } + + /** {@link DynamicTreeContentProviderBase} for the library view. */ + private class LibraryContentProvider extends DynamicTreeContentProviderBase<Object> { + /** {@inheritDoc} */ + @Override + protected Collection<? extends Object> getChildren(Object parent) { + return emptyList(); // FIXME + } + } + + /** {@link DynamicTreeUIProviderBase} for the library view. */ + private class LibraryUIProvider extends DynamicTreeUIProviderBase<Object> { + // TODO: go on here + } +} diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/service/.ratings b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/service/.ratings index 86599ae4e..5cc6adbc8 100644 --- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/service/.ratings +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/service/.ratings @@ -4,6 +4,6 @@ IContextMenuService.java cfb6b8237b6cd2b0e461991a9ceb95969f330265 GREEN IEditPartFactoryService.java c448bff63fb81f57037c9f1dc5319859c12d0c4d GREEN IMarkerService.java d433e838e387dd2fe61b8dea7395ebb7203ae39b GREEN IModelEditorBindingService.java ce2ae1957e2232bb0fac1d1d262103f9adfc5266 GREEN -IModelElementHandlerService.java 1ff2bda9054f6bbd4017fc0ddc118b7702196815 GREEN +IModelElementHandlerService.java 580f526ed495ae474b3cf8e6851acd64322417da RED INavigatorService.java 8d2ffeb6f075d3abea904b84d8a40090d97837fd GREEN ITutorialUIService.java 72707c60c3d23d8ffc5c579cb9b022bb614eb094 GREEN diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/service/IModelElementHandlerService.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/service/IModelElementHandlerService.java index 1ff2bda90..580f526ed 100644 --- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/service/IModelElementHandlerService.java +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/service/IModelElementHandlerService.java @@ -31,11 +31,14 @@ import javafx.scene.Node; * @author hoelzl */ public interface IModelElementHandlerService { - /** The view ID of the model element library view. */ public static final String MODEL_ELEMENT_LIBRARY_VIEW = "org.fortiss.tooling.kernel.model.element.library"; + /** The view ID of the model element library view. */ + public static final String MODEL_ELEMENT_LIBRARY_VIEW_FX = + "org.fortiss.tooling.kernel.model.element.library.fx"; + /** Returns the service instance. */ public static IModelElementHandlerService getInstance() { return ModelElementHandlerService.getInstance(); -- GitLab