Skip to content
Snippets Groups Projects
Commit 1a2a7a42 authored by Andreas Bayha's avatar Andreas Bayha
Browse files

Merge remote-tracking branch 'origin/master' into 4240

parents 4ae10e0c 9d1fd4c3
No related branches found
No related tags found
1 merge request!1784240
Pipeline #37676 passed
Pipeline: maven-releng

#37677

    Showing
    with 232 additions and 89 deletions
    ......@@ -2,10 +2,10 @@ Manifest-Version: 1.0
    Bundle-ManifestVersion: 2
    Bundle-Name: Tooling Base UI
    Bundle-SymbolicName: org.fortiss.tooling.base.ui;singleton:=true
    Bundle-Version: 2.21.0.qualifier
    Bundle-Version: 2.23.0.qualifier
    Bundle-Activator: org.fortiss.tooling.base.ui.ToolingBaseUIActivator
    Require-Bundle: org.fortiss.tooling.base;bundle-version="2.21.0";visibility:=reexport,
    org.fortiss.tooling.kernel.ui;bundle-version="2.21.0";visibility:=reexport,
    Require-Bundle: org.fortiss.tooling.base;bundle-version="2.23.0";visibility:=reexport,
    org.fortiss.tooling.kernel.ui;bundle-version="2.23.0";visibility:=reexport,
    org.eclipse.swt,
    org.fortiss.tooling.common.ui
    Bundle-ActivationPolicy: lazy
    ......
    ......@@ -2,7 +2,7 @@ Manifest-Version: 1.0
    Bundle-ManifestVersion: 2
    Bundle-Name: %pluginName
    Bundle-SymbolicName: org.fortiss.tooling.base;singleton:=true
    Bundle-Version: 2.21.0.qualifier
    Bundle-Version: 2.23.0.qualifier
    Bundle-ClassPath: .
    Bundle-Vendor: %providerName
    Bundle-Localization: plugin
    ......
    DefaultLayoutConstants.java 10ba39d25701f7aff7ef545ec69e42a6117ae7b1 GREEN
    DiagramTapeMeasure.java 2aaf2d0765d0ba5292ec2468d0d04d52f36370a6 GREEN
    DiagramTapeMeasure.java 4ac1310faa82746f0a66e684677588cbcdfcdde9 GREEN
    HorizontalDiagramTapeMeasure.java 98bcb18ed5171c5ff191225cf21a305d5ef06440 GREEN
    IAutoLayouter.java 8f22d3813491159151a8753dd683a5043554fb67 GREEN
    IAutoLayouterTapeMeasure.java 5ef5c7d0a124714d582de283d3915d8b4bf7fda8 GREEN
    KielerAutoLayouter.java 94de655f6abf6d7d6d747f96de07e0be50588abd GREEN
    LayoutKeyConstants.java 1e35b73f26f2691ef80fa885e4c5fc6c6a60bd05 GREEN
    KielerAutoLayouter.java 9cc7943ff90c55851b81bf7c4cde7b279992e925 GREEN
    LayoutKeyConstants.java 00d19473f69e2e9bdd541d41e737d2c99a0fd281 GREEN
    VerticalDiagramTapeMeasure.java 0b83af2189b4f55d0dfe121ae4e86cee064c5164 GREEN
    ......@@ -35,18 +35,16 @@ import javafx.geometry.Bounds;
    import javafx.scene.text.Text;
    /**
    * {@link IAutoLayouterTapeMeasure} specialization to for automatic layout of models to be displayed
    * in JavaFX-based editors.
    * {@link IAutoLayouterTapeMeasure} base class of models to be displayed in JavaFX-based editors.
    *
    * @author barner
    */
    public class DiagramTapeMeasure implements IAutoLayouterTapeMeasure {
    public abstract class DiagramTapeMeasure implements IAutoLayouterTapeMeasure {
    /**
    * Returns the an estimation of the text extent of the given {@code element}'s label (may be
    * {@code null}).
    */
    private Bounds getTextExtent(IModelElement element) {
    protected Bounds getTextExtent(IModelElement element) {
    if(!(element instanceof INamedElement)) {
    return null;
    }
    ......@@ -55,6 +53,19 @@ public class DiagramTapeMeasure implements IAutoLayouterTapeMeasure {
    return text.getBoundsInLocal();
    }
    /**
    * Returns the maximum of the given length and a default length derived from the element's
    * connector count.
    */
    protected int getElementLength(int length, IHierarchicElement element) {
    int numElemConnectors = element.getConnectors().size();
    int numElemInputConnectors =
    pickInstanceOf(EntryConnectorBase.class, element.getConnectors()).size();
    int numConnectors = max(numElemInputConnectors, numElemConnectors - numElemInputConnectors);
    return max((1 + 2 * numConnectors) * DEFAULT_CONNECTOR_SIZE, length);
    }
    /** {@inheritDoc} */
    @Override
    public int getElementWidth(IHierarchicElement element) {
    ......@@ -73,12 +84,7 @@ public class DiagramTapeMeasure implements IAutoLayouterTapeMeasure {
    @Override
    public int getElementHeight(IHierarchicElement element) {
    Dimension dimension = getNodeSize((ILayoutedModelElement)element);
    int numElemConnectors = element.getConnectors().size();
    int numElemInputConnectors =
    pickInstanceOf(EntryConnectorBase.class, element.getConnectors()).size();
    int numConnectors = max(numElemInputConnectors, numElemConnectors - numElemInputConnectors);
    return max((1 + 2 * numConnectors) * DEFAULT_CONNECTOR_SIZE, dimension.getHeight());
    return dimension.getHeight();
    }
    /** {@inheritDoc} */
    ......
    /*--------------------------------------------------------------------------+
    | |
    | Copyright 2022 fortiss GmbH |
    /*-------------------------------------------------------------------------+
    | Copyright 2018 fortiss GmbH |
    | |
    | Licensed under the Apache License, Version 2.0 (the "License"); |
    | you may not use this file except in compliance with the License. |
    ......@@ -14,26 +13,23 @@
    | See the License for the specific language governing permissions and |
    | limitations under the License. |
    +--------------------------------------------------------------------------*/
    package org.fortiss.tooling.ext.variability.ui.util;
    package org.fortiss.tooling.base.layout;
    import org.fortiss.tooling.kernel.ui.service.INavigatorService;
    import org.fortiss.tooling.base.model.element.IHierarchicElement;
    /**
    * Utility functions related to the variability visualization.
    * {@link IAutoLayouterTapeMeasure} specialization for automatic horizontal layout of models to be
    * displayed in JavaFX-based editors.
    *
    * @author bayha
    * @author barner
    */
    public class VariabilityViewUtils {
    public class HorizontalDiagramTapeMeasure extends DiagramTapeMeasure {
    /** {@inheritDoc} */
    @Override
    public int getElementHeight(IHierarchicElement element) {
    int height = super.getElementHeight(element);
    /**
    * Retrieves the information whether variability options shall be displayed in
    * the UI.
    *
    * Currently this is coupled to the expert view.
    *
    * @return True if variability shall be available, otherwise false.
    */
    public static boolean isVariabilityViewActive() {
    return INavigatorService.getInstance().isExpertViewActive();
    return getElementLength(height, element);
    }
    }
    ......@@ -35,6 +35,7 @@ import org.eclipse.elk.alg.layered.options.LayeredMetaDataProvider;
    import org.eclipse.elk.alg.layered.options.LayeredOptions;
    import org.eclipse.elk.core.AbstractLayoutProvider;
    import org.eclipse.elk.core.data.LayoutMetaDataService;
    import org.eclipse.elk.core.math.ElkPadding;
    import org.eclipse.elk.core.options.Direction;
    import org.eclipse.elk.core.options.EdgeRouting;
    import org.eclipse.elk.core.options.PortLabelPlacement;
    ......@@ -57,8 +58,10 @@ import org.fortiss.tooling.base.model.element.IHierarchicElement;
    import org.fortiss.tooling.base.model.layout.EOrientation;
    import org.fortiss.tooling.base.model.layout.ILayoutData;
    import org.fortiss.tooling.base.model.layout.ILayoutedModelElement;
    import org.fortiss.tooling.base.model.layout.OffsetOrientation;
    import org.fortiss.tooling.base.model.layout.Points;
    import org.fortiss.tooling.base.model.layout.impl.PointsImpl;
    import org.fortiss.tooling.base.utils.OffsetOrientationUtils;
    import org.fortiss.tooling.kernel.model.INamedElement;
    /**
    ......@@ -105,9 +108,18 @@ public class KielerAutoLayouter implements IAutoLayouter {
    LayoutMetaDataService.getInstance()
    .registerLayoutMetaDataProviders(new LayeredMetaDataProvider());
    ElkNode rootNode = createELKGraph(element);
    Direction direction = getDiagramDirection(element);
    int offset = getDiagramOffset(element);
    IAutoLayouterTapeMeasure tapeMeasure;
    if(direction.isHorizontal()) {
    tapeMeasure = new HorizontalDiagramTapeMeasure();
    } else {
    tapeMeasure = new VerticalDiagramTapeMeasure();
    }
    rootNode.setProperty(LayeredOptions.DIRECTION, Direction.RIGHT);
    ElkNode rootNode = createELKGraph(element, tapeMeasure);
    rootNode.setProperty(LayeredOptions.DIRECTION, direction);
    rootNode.setProperty(LayeredOptions.PADDING, new ElkPadding(offset));
    rootNode.setProperty(LayeredOptions.INTERACTIVE_LAYOUT, true);
    rootNode.setProperty(LayeredOptions.FEEDBACK_EDGES, true);
    rootNode.setProperty(LayeredOptions.EDGE_ROUTING, EdgeRouting.ORTHOGONAL);
    ......@@ -126,6 +138,40 @@ public class KielerAutoLayouter implements IAutoLayouter {
    applyLayout(rootNode, element);
    }
    /** Reads the diagram direction from the model element or returns default */
    private static Direction getDiagramDirection(IHierarchicElement diagram) {
    if(diagram instanceof ILayoutedModelElement) {
    OffsetOrientation offsetOrientation = OffsetOrientationUtils.getOffsetOrientation(
    (ILayoutedModelElement)diagram, LayoutKeyConstants.DIAGRAM_OFFSET_ORIENTATION);
    if(offsetOrientation != null) {
    switch(offsetOrientation.getOrientation()) {
    case NORTH:
    return Direction.UP;
    case EAST:
    return Direction.RIGHT;
    case SOUTH:
    return Direction.DOWN;
    case WEST:
    return Direction.LEFT;
    }
    }
    }
    return Direction.RIGHT;
    }
    /** Reads the diagram offset from the model element or returns default */
    private static int getDiagramOffset(IHierarchicElement diagram) {
    if(diagram instanceof ILayoutedModelElement) {
    OffsetOrientation offsetOrientation = OffsetOrientationUtils.getOffsetOrientation(
    (ILayoutedModelElement)diagram, LayoutKeyConstants.DIAGRAM_OFFSET_ORIENTATION);
    if(offsetOrientation != null) {
    return offsetOrientation.getOffset();
    }
    }
    return 0;
    }
    /**
    * Truncates a given {@code float} value and decreases the value until it is a multiple of the
    * grid size.
    ......@@ -248,12 +294,18 @@ public class KielerAutoLayouter implements IAutoLayouter {
    break;
    }
    // The parent component need not be aligned to the grid. The Y-coordinate
    // of the parent is truncated. Since elkPort.getY() is relative to the
    // Y-coordinate of the parent, we need to correct when snapping to the grid.
    double parentGridOffset = elkPort.getParent().getY() % DEFAULT_GRID_SIZE;
    setStickyConnectorLayoutData((ILayoutedModelElement)connector, orientation,
    truncateSnap2Grid(elkPort.getY() + parentGridOffset));
    if(side == PortSide.WEST || side == PortSide.EAST) {
    // The parent component need not be aligned to the grid. The Y-coordinate
    // of the parent is truncated. Since elkPort.getY() is relative to the
    // Y-coordinate of the parent, we need to correct when snapping to the grid.
    double parentGridOffset = elkPort.getParent().getY() % DEFAULT_GRID_SIZE;
    setStickyConnectorLayoutData((ILayoutedModelElement)connector, orientation,
    truncateSnap2Grid(elkPort.getY() + parentGridOffset));
    } else {
    double parentGridOffset = elkPort.getParent().getX() % DEFAULT_GRID_SIZE;
    setStickyConnectorLayoutData((ILayoutedModelElement)connector, orientation,
    truncateSnap2Grid(elkPort.getX() + parentGridOffset));
    }
    }
    }
    ......@@ -275,11 +327,15 @@ public class KielerAutoLayouter implements IAutoLayouter {
    * @param element
    * The {@link IHierarchicElement} for which the {@link ElkNode} graph should be
    * created
    *
    * @param tapeMeasure
    * The {@link IAutoLayouterTapeMeasure} to estimate node sizes
    *
    * @return A {@link ElkNode} graph with the same structure as the graph contained in the
    * {@link IHierarchicElement}.
    */
    private ElkNode createELKGraph(IHierarchicElement element) {
    private ElkNode createELKGraph(IHierarchicElement element,
    IAutoLayouterTapeMeasure tapeMeasure) {
    ElkNode rootNode = createGraph();
    ......@@ -289,8 +345,6 @@ public class KielerAutoLayouter implements IAutoLayouter {
    connectionsToElkEdges = new BasicEMap<IConnection, ElkEdge>();
    undirectedConnectorsToElkPorts = new BasicEMap<IConnector, ElkPort>();
    IAutoLayouterTapeMeasure tapeMeasure = new DiagramTapeMeasure();
    // Create nodes
    for(IHierarchicElement child : element.getContainedElements()) {
    if(!(child instanceof ILayoutedModelElement)) {
    ......@@ -400,6 +454,7 @@ public class KielerAutoLayouter implements IAutoLayouter {
    IConnector connector, ElkNode elkNode, EMap<IConnector, ElkPort> connectorsToelkPorts) {
    ElkPort elkPort = createPort(elkNode);
    elkPort.setParent(elkNode);
    elkPort.setWidth(DEFAULT_CONNECTOR_SIZE);
    elkPort.setHeight(DEFAULT_CONNECTOR_SIZE);
    if(connector instanceof INamedElement) {
    ......
    ......@@ -36,18 +36,21 @@ public final class LayoutKeyConstants {
    /** Points layout data key. */
    public static final String CONNECTION_POINTS = "points";
    /** Sticky position layout data key */
    /** Sticky position layout data key. */
    public static final String CONNECTOR_POSITION = "cpos";
    /** Sticky dimension layout data key */
    /** Sticky dimension layout data key. */
    public static final String CONNECTOR_DIMENSION = "cdim";
    /** Sticky offset orientation layout data key */
    /** Sticky offset orientation layout data key. */
    public static final String CONNECTOR_OFFSET_ORIENTATION = "coffsetorient";
    /** Sticky offset layout data key */
    /** Sticky offset layout data key. */
    public static final String CONNECTOR_OFFSET = "coffset";
    /** Sticky angle layout data key */
    /** Sticky angle layout data key. */
    public static final String CONNECTOR_ANGLE = "cangle";
    /** Diagram offset orientation. */
    public static final String DIAGRAM_OFFSET_ORIENTATION = "diagorient";
    }
    /*-------------------------------------------------------------------------+
    | Copyright 2018 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.base.layout;
    import org.fortiss.tooling.base.model.element.IHierarchicElement;
    /**
    * {@link IAutoLayouterTapeMeasure} specialization for automatic vertical layout of models to be
    * displayed in JavaFX-based editors.
    *
    * @author barner
    */
    public class VerticalDiagramTapeMeasure extends DiagramTapeMeasure {
    /** {@inheritDoc} */
    @Override
    public int getElementWidth(IHierarchicElement element) {
    int width = super.getElementWidth(element);
    return getElementLength(width, element);
    }
    }
    ......@@ -2,7 +2,7 @@ Manifest-Version: 1.0
    Bundle-ManifestVersion: 2
    Bundle-Name: Tooling Commons UI
    Bundle-SymbolicName: org.fortiss.tooling.common.ui;singleton:=true
    Bundle-Version: 2.21.0.qualifier
    Bundle-Version: 2.23.0.qualifier
    Bundle-RequiredExecutionEnvironment: JavaSE-11
    Require-Bundle: org.fortiss.tooling.common;visibility:=reexport,
    org.eclipse.core.resources;visibility:=reexport,
    ......
    DynamicList.java 786300e2e914826da239329d190abea1710478ea GREEN
    DynamicListContentProvider.java 817cba44f246a361207a88ef9a4e1869215803f7 GREEN
    DynamicStreamContentProvider.java f46e91400609cba54793dd240be0fe2aa0d5cced GREEN
    DynamicTextFieldTreeTableCell.java de24117e6f785b328f1ff62383626a0b4b54e8ff GREEN
    DynamicTextFieldTreeTableCell.java 62fa0c08b11d87e0eed41f84be85505c2740e75d GREEN
    DynamicTreeContentProviderBase.java 91896b1fb5104d126544c44c1ff8c30f2a13a8d6 GREEN
    DynamicTreeItem.java 7e81ea98038b5eca90df583e0268d4e8f37aaf25 GREEN
    DynamicTreeItemBase.java d883066ecc181120302ca32f328538de7a45b093 GREEN
    DynamicTreeTableUIProviderBase.java 25592d4d2fb4a6cf904e8bdd98fc5138cbea5f17 GREEN
    DynamicTreeTableUIProviderBase.java 29aa753793ab90676d45e5b76b11f7b46ce02a97 GREEN
    DynamicTreeTableViewer.java 77e9995a3bee37d57578dad9434a53c702128efa YELLOW
    DynamicTreeUIProviderBase.java 82d3c051213f0147f4c67ad247a08696cee73110 GREEN
    DynamicTreeViewer.java 33066062a82101cf28410e4d04f85bb9c24251db GREEN
    ......
    ......@@ -42,11 +42,21 @@ public class DynamicTextFieldTreeTableCell<T> extends TextFieldTreeTableCell<T,
    /** The current entered text in the TextField. */
    private String currentInput = "";
    /** The UIProvider of the editor in which this cell is embedded in. */
    DynamicTreeTableUIProviderBase<T> uiProvider;
    /** The column index, this cell is embedded in. */
    int columnIndex;
    /**
    * Constructor.
    */
    public DynamicTextFieldTreeTableCell() {
    public DynamicTextFieldTreeTableCell(DynamicTreeTableUIProviderBase<T> uiProvider,
    int columnIndex) {
    this(new DefaultStringConverter());
    this.uiProvider = uiProvider;
    this.columnIndex = columnIndex;
    }
    /**
    ......@@ -103,19 +113,28 @@ public class DynamicTextFieldTreeTableCell<T> extends TextFieldTreeTableCell<T,
    // Remember currently edited element.
    currentlyEditedElement = currentEntry;
    String initialEditorContent =
    uiProvider.getInitialEditorContent(currentlyEditedElement, columnIndex);
    // Reset currentInput buffer for the new element.
    currentInput = "";
    currentInput = initialEditorContent;
    // We keep the current input in the buffer variable currentInput to be able to
    // use it during unintended cancel options. See cancelEdit().
    TextField textField = (TextField)getGraphic();
    if(textField != null) {
    textField.setOnKeyReleased(event -> {
    currentInput = textField.getText();
    });
    textField.setText(initialEditorContent);
    }
    } else {
    // Reset buffer
    currentlyEditedElement = null;
    }
    // We keep the current input in the buffer variable currentInput to be able to
    // use it during unintended cancel options. See cancelEdit().
    TextField textField = (TextField)getGraphic();
    if(textField != null) {
    textField.setOnKeyReleased(event -> {
    currentInput = textField.getText();
    });
    currentInput = null;
    }
    }
    ......@@ -133,10 +152,16 @@ public class DynamicTextFieldTreeTableCell<T> extends TextFieldTreeTableCell<T,
    // Set the current TextField value if intended.
    if(currentlyEditedElement != null) {
    setValueOnLeavingCell(currentlyEditedElement, currentInput);
    String initialEditorContent =
    uiProvider.getInitialEditorContent(currentlyEditedElement, columnIndex);
    if(!currentInput.equals(initialEditorContent)) {
    setValueOnLeavingCell(currentlyEditedElement, currentInput);
    }
    currentlyEditedElement = null;
    }
    }
    getTreeTableView().refresh();
    }
    /** {@inheritDoc} */
    ......
    ......@@ -64,6 +64,19 @@ public abstract class DynamicTreeTableUIProviderBase<T> {
    return "";
    }
    /**
    * Determines, which {@link String} is in text editor cells when stating to edit.
    *
    * @param element
    * The element for which eitr content shall be provided
    * @param column
    * The column index for which the content shall be provided
    * @return The {@link String} which shal be displayed in the editor.
    */
    public String getInitialEditorContent(T element, int column) {
    return getLabel(element, column);
    }
    /**
    * @param element
    * the element to be displayed in the current row
    ......@@ -534,27 +547,29 @@ public abstract class DynamicTreeTableUIProviderBase<T> {
    */
    public void applyToTextColumn(int columnIndex, TreeTableColumn<T, String> column) {
    column.setCellFactory(ttColumn -> {
    DynamicTextFieldTreeTableCell<T> cell = new DynamicTextFieldTreeTableCell<T>() {
    DynamicTextFieldTreeTableCell<T> cell =
    new DynamicTextFieldTreeTableCell<T>(this, columnIndex) {
    /** {@inheritDoc} */
    @Override
    protected boolean canEdit(T element) {
    return DynamicTreeTableUIProviderBase.this.isEditable(columnIndex, element);
    }
    /** {@inheritDoc} */
    @Override
    protected boolean canEdit(T element) {
    return DynamicTreeTableUIProviderBase.this.isEditable(columnIndex,
    element);
    }
    /** {@inheritDoc} */
    @Override
    protected void setValueOnLeavingCell(T element, String currentValue) {
    updateValue(element, columnIndex, currentValue);
    }
    /** {@inheritDoc} */
    @Override
    protected void setValueOnLeavingCell(T element, String currentValue) {
    updateValue(element, columnIndex, currentValue);
    }
    /** {@inheritDoc} */
    @Override
    public void updateItem(String item, boolean empty) {
    super.updateItem(item, empty);
    styleCell(this, columnIndex);
    }
    };
    /** {@inheritDoc} */
    @Override
    public void updateItem(String item, boolean empty) {
    super.updateItem(item, empty);
    styleCell(this, columnIndex);
    }
    };
    styleCell(cell, columnIndex);
    ......
    ......@@ -90,8 +90,8 @@ public abstract class CircularContentVisualBase extends ContentVisualBase {
    double angleRad = toRadians(angleDeg);
    double nx = cos(angleRad);
    double ny = sin(angleRad);
    double x = pb.getMinX() + w2 + radius * nx;
    double y = pb.getMinY() + h2 + radius * ny;
    double x = w2 + radius * nx;
    double y = h2 + radius * ny;
    return new DiagramCoordinate(x, y);
    }
    ......
    ......@@ -2,7 +2,7 @@ Manifest-Version: 1.0
    Bundle-ManifestVersion: 2
    Bundle-Name: Tooling Commons
    Bundle-SymbolicName: org.fortiss.tooling.common;singleton:=true
    Bundle-Version: 2.21.0.qualifier
    Bundle-Version: 2.23.0.qualifier
    Require-Bundle: org.eclipse.core.runtime;visibility:=reexport,
    com.ibm.icu;visibility:=reexport,
    org.junit;visibility:=reexport
    ......
    ......@@ -3,7 +3,7 @@ Automatic-Module-Name: org.fortiss.tooling.ext.reuse.ui
    Bundle-ManifestVersion: 2
    Bundle-Name: AF3 Reuse UI
    Bundle-SymbolicName: org.fortiss.tooling.ext.reuse.ui;singleton:=true
    Bundle-Version: 2.21.0.qualifier
    Bundle-Version: 2.23.0.qualifier
    Bundle-Activator: org.fortiss.tooling.ext.reuse.ui.ToolingReuseUIActivator
    Require-Bundle: org.eclipse.ui.ide;visibility:=reexport,
    org.fortiss.tooling.base.ui;visibility:=reexport,
    ......
    org.fortiss.tooling.ext.reuse.ui/icons/af3_icon64.png

    6.11 KiB

    org.fortiss.tooling.ext.reuse.ui/icons/af3_logo.png

    22.2 KiB

    org.fortiss.tooling.ext.reuse.ui/icons/af3_logo_square.png

    33.5 KiB

    org.fortiss.tooling.ext.reuse.ui/icons/lib_update_info.png

    612 B

    ......@@ -36,6 +36,12 @@
    contributor="org.fortiss.tooling.ext.reuse.ui.commands.UpdateFromLibContextMenu">
    </contextMenuContribution>
    </extension>
    <extension
    point="org.fortiss.tooling.kernel.ui.contextMenuContribution">
    <contextMenuContribution
    contributor="org.fortiss.tooling.ext.reuse.ui.commands.GetUpdatedOriginsContextMenu">
    </contextMenuContribution>
    </extension>
    <extension
    point="org.eclipse.ui.views">
    <view
    ......
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment