Skip to content
Snippets Groups Projects
Commit 966f98da authored by Johannes Eder's avatar Johannes Eder
Browse files

fixed master merge conflict

parents 8559fbe8 85c92880
No related branches found
No related tags found
1 merge request!1083969
Showing
with 167 additions and 61 deletions
......@@ -2,10 +2,9 @@ ConnectionCompositorBase.java 692689b535d7136acab2ab67a015f70809e64b6b GREEN
ConnectorCompositorBase.java 0264edd4034da7187d1dbdf35a674c7067adf3cd GREEN
ConnectorConnectionCompositorBase.java eed310a4710492b7ce3bc302c3db4e5c40f4d817 GREEN
ConnectorHierarchicElementConnectionCompositorBase.java 7a8e4acf235d5eb006c859056cce89fbb0aac05d GREEN
ConstraintInstanceContainerCompositor.java 9cb23f13c6cddba18ac7f9dcfd1afd9e7bce4d77 GREEN
HierarchicElementCompositorBase.java eed5112371a5819843d65ab8463ec385e50ed1e4 GREEN
HierarchicElementCompositorBase.java 79381013dcbce69031523221e9fe5ba1224580df GREEN
HierarchicElementConnectionCompositorBase.java c5c4914d01f96a8f564f9a3c9bf4685e0f1e9155 GREEN
HierarchicElementConnectorConnectionCompositorBase.java 0dfbe483e893be9c97d681a2610549d73e5adebc GREEN
LogMessageUserInteractionContext.java b145045589fba08b67a12b5d41c51729aa4ae94e GREEN
ModelElementCompositorBase.java 0c69a61e750fc67cb71093f077eb749d248da924 GREEN
ModelElementCompositorBase.java 7cf2c62b70258f3b0e7e2a2979078e4fce7c9856 GREEN
ModelElementWithRefCopyMessage.java 486c90c5896d7fe4a4595c6dbe602838a044ad14 GREEN
......@@ -26,7 +26,6 @@ import org.fortiss.tooling.base.model.element.IConnection;
import org.fortiss.tooling.base.model.element.IConnector;
import org.fortiss.tooling.base.model.element.IHierarchicElement;
import org.fortiss.tooling.base.model.element.IHierarchicElementContainer;
import org.fortiss.tooling.kernel.model.constraints.IConstrained;
import org.fortiss.tooling.kernel.service.IConnectionCompositorService;
import org.fortiss.tooling.kernel.service.IElementCompositorService;
......@@ -44,11 +43,6 @@ public abstract class HierarchicElementCompositorBase<HE extends IHierarchicElem
*/
@Override
public final boolean decompose(EObject contained) {
// If there exist any constraints, remove them first to avoid verification launches due to
// EMF notifications when the container is removed.
if(contained instanceof IConstrained) {
((IConstrained)contained).getConstraintInstances().clear();
}
return iterateDecompose(contained) && decomposeSpecific(contained);
}
......
......@@ -31,8 +31,6 @@ import org.fortiss.tooling.kernel.extension.IElementCompositor;
import org.fortiss.tooling.kernel.extension.data.IElementCompositionContext;
import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
import org.fortiss.tooling.kernel.model.INamedElement;
import org.fortiss.tooling.kernel.model.constraints.ConstraintInstance;
import org.fortiss.tooling.kernel.model.constraints.IConstrained;
import org.fortiss.tooling.kernel.service.IElementCompositorService;
import org.fortiss.tooling.kernel.service.IPersistencyService;
......@@ -88,15 +86,6 @@ public abstract class ModelElementCompositorBase<C extends EObject> extends Obse
*/
@Override
public boolean decompose(EObject contained) {
// Removes first the constraints
if(contained instanceof IConstrained) {
for(ConstraintInstance ci : ((IConstrained)contained).getConstraintInstances()) {
for(IConstrained c : ci.getConstraineds()) {
c.getConstraintInstances().remove(ci);
}
EcoreUtil.delete(ci, true);
}
}
return iterateDecompose(contained) && decomposeSpecific(contained);
}
......
DynamicTreeContentProviderBase.java 6760a6dc5721175b1dada8f30fd9da05f7bcc4b3 GREEN
DynamicTreeItem.java 75dc5534b119ffdb3c10a65810c2a0f330b7955e GREEN
DynamicTreeTableUIProviderBase.java 75ddf3e91c08fd6a5853ab261593040d1039d774 GREEN
DynamicTreeTableUIProviderBase.java f4fd20e3d267bc39a33a3bbb18416312779ea886 GREEN
DynamicTreeTableViewer.java 431ac62cbd6ad7df25852fce1b5a62a05ba510e3 GREEN
DynamicTreeUIProviderBase.java e9b68607683de279d0cb8712a28dc131c5c33ece GREEN
DynamicTreeViewer.java e9f19d16a2a7e5a1b03b8a8b543453ac7eb6a051 GREEN
......
......@@ -13,14 +13,17 @@
*******************************************************************************/
package org.fortiss.tooling.common.ui.javafx.control.treetableview;
import static javafx.scene.control.cell.TextFieldTreeTableCell.forTreeTableColumn;
import javafx.scene.Node;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.TextField;
import javafx.scene.control.TreeTableCell;
import javafx.scene.control.TreeTableColumn;
import javafx.scene.control.cell.TextFieldTreeTableCell;
import javafx.scene.input.Dragboard;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.util.Callback;
import javafx.util.converter.DefaultStringConverter;
/**
* This UI provider is responsible to return the label, the icon, and the context menu for each cell
......@@ -128,8 +131,11 @@ public abstract class DynamicTreeTableUIProviderBase<T> {
column.setOnEditCommit(null);
return;
}
column.setCellFactory(createEditableCellFactory());
column.setCellFactory(createEditableCellFactory(i));
column.setEditable(true);
column.setOnEditStart(event -> {
event.getEventType();
});
column.setOnEditCommit(event -> {
T element = event.getRowValue().getValue();
int colIndex = event.getTreeTablePosition().getColumn();
......@@ -141,8 +147,82 @@ public abstract class DynamicTreeTableUIProviderBase<T> {
/** Creates a cell factory for editable cells. */
private Callback<TreeTableColumn<T, String>, TreeTableCell<T, String>>
createEditableCellFactory() {
return forTreeTableColumn();
createEditableCellFactory(int colIndex) {
return param -> {
return new MyTextFieldTreeTableCell(colIndex);
};
}
/** Custom table cell implementation to allow on key released validation. */
private class MyTextFieldTreeTableCell extends TextFieldTreeTableCell<T, String> {
/** The column index of this cell. */
private final int columnIndex;
/** Constructor. */
public MyTextFieldTreeTableCell(int colIndex) {
this.columnIndex = colIndex;
setConverter(new DefaultStringConverter());
}
/** {@inheritDoc} */
@Override
public void startEdit() {
if(!isEditable() || !getTreeTableView().isEditable() ||
!getTableColumn().isEditable()) {
return;
}
super.startEdit();
// the following code uses implementation details of
// CellUtils.startEdit(...) and CellUtils.createTextfield(...)
TextField tf = (TextField)getGraphic(); // CellUtils:228
tf.setOnKeyReleased(t -> {
DynamicTreeTableUIProviderBase<T>.MyTextFieldTreeTableCell mythis =
MyTextFieldTreeTableCell.this;
if(t.getCode() == KeyCode.ESCAPE) {
mythis.cancelEdit();
t.consume();
} else {
T item = mythis.getTreeTableRow().getItem();
validateOnKeyReleased(t, columnIndex, item, tf.getText());
}
});
}
/** {@inheritDoc} */
@Override
public void cancelEdit() {
super.cancelEdit();
T item = getTreeTableRow().getItem();
validateOnCancelEdit(columnIndex, item);
}
}
/**
* Called when editing a cell was canceled.
*
* @param colIndex
* the index of the column
* @param item
* the row item
*/
public void validateOnCancelEdit(int colIndex, T item) {
// nothing to do
}
/**
* Called when a key was released during editing. Implementors should consume the event.
*
* @param event
* the key released event
* @param colIndex
* the index of the column
* @param item
* the row item
* @param text
* the current textfield content
*/
public void validateOnKeyReleased(KeyEvent event, int colIndex, T item, String text) {
// nothing to do
}
/** Creates a cell factory for read-only cells. */
......
......@@ -402,8 +402,8 @@ public class DiagramViewer {
}
/** Interprets the effect of shift-clicking the given {@link IMVCBundle}. */
public void handleShiftSelectionOf(IMVCBundle sel) {
viewerManager.handleShiftSelectionOf(sel);
public void handleCtrlSelectionOf(IMVCBundle sel) {
viewerManager.handleCtrlSelectionOf(sel);
}
/**
......
......@@ -605,7 +605,7 @@ import org.fortiss.tooling.common.ui.javafx.lwfxef.visual.IVisualFactory;
}
/** Performs shift selection of the given bundle. */
public void handleShiftSelectionOf(IMVCBundle sel) {
public void handleCtrlSelectionOf(IMVCBundle sel) {
if(primarySelectedBundle == sel || secondarySelectedBundles.contains(sel)) {
removeSelectedMVCBundle(sel);
} else {
......
IClickController.java c0270e99d918aef14612d46f3e84905d3a6bdd8c GREEN
IController.java 443fe97dae2f8142e9ebc6df3267b505444c4bbe GREEN
IController.java 84958424716cf934f461690d6b94a02f90e0f2a1 GREEN
IControllerFactory.java 85b86eda643489f2a03454eae5383915ecf27f83 GREEN
IDragController.java c1f311d2ae9ed684c8a7cd85e9ed1f85e79658d1 GREEN
IKeyPressController.java dc8fe2a7c441866122e8c7b3114fd12d17f0b051 GREEN
......@@ -40,7 +40,7 @@ public interface IController extends IMVCBundlePart {
* Returns whether the {@link IMVCBundle} should be added to the selection if the mouse is
* pressed on one of its nodes while the shift key is down.
*/
boolean selectOnShiftMousePress();
boolean selectOnCtrlMousePress();
/** Returns an {@link IDragController} for the given node and last mouse location. */
IDragController getDragController(EDragGesture gesture, Node node,
......
AnchorageContentControllerBase.java da56b10cbf2711b5da69f0b59f43eacbe54f4eea GREEN
ClickControllerBase.java 8e5861ed5f9318008ad0fdd5497ed320cd5bd647 GREEN
ContentAnchorageMoveControllerBase.java c18e7915ce23e124757f5b736086ecc46694800a GREEN
ControllerBase.java 0ab6cf1b36cf3618a70c1666fd8747c59e90dbc6 GREEN
ControllerBase.java 9311521b252e46640e26d409610e527fd5ed6922 GREEN
DefaultDiagramController.java 0e083b89a08f63967102a384d66ebc1d64d203af GREEN
DelegatingContentAnchorageController.java 2e3b1b4e14402a3503233f816b21ef3e4aa09edc GREEN
DelegatingContentAnchorageController.java 1889628a346a2183082ffe213978f9d15a949494 GREEN
DragControllerBase.java b15ff874304f679fe494d85f57cc8cbe4d0d1d15 GREEN
DraggingUtils.java 95117e2ea4c36b6c6a31f8088bb95b484e0e6612 GREEN
LinkControllerBase.java c2232100230997f1ba7f2686a2f0626f85d223ed GREEN
LinkControllerBase.java b59796a87ac5d5e054c332d0867d5e3d308d9936 GREEN
MoveControllerBase.java 38d632e31f5e27d112ecdd4933e3a331378180d0 GREEN
ResizableContentControllerBase.java 898500d389b035f8138308d496d2d24be501c719 GREEN
......@@ -54,7 +54,7 @@ public abstract class ControllerBase extends MVCBundlePartBase implements IContr
/** {@inheritDoc} */
@Override
public boolean selectOnShiftMousePress() {
public boolean selectOnCtrlMousePress() {
return true;
}
......@@ -75,8 +75,8 @@ public abstract class ControllerBase extends MVCBundlePartBase implements IContr
if(!selectOnClick()) {
return null;
}
if(event.isShiftDown()) {
getViewer().handleShiftSelectionOf(getMVCBundle());
if(event.isControlDown() && selectOnCtrlMousePress()) {
getViewer().handleCtrlSelectionOf(getMVCBundle());
} else {
getViewer().setSingleSelectedMVCBundle(getMVCBundle());
}
......
......@@ -12,14 +12,20 @@ package org.fortiss.tooling.common.ui.javafx.lwfxef.controller.base;
import static org.fortiss.tooling.common.ui.javafx.lwfxef.EDragGesture.MOVE;
import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramCoordinate;
import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramViewer;
import org.fortiss.tooling.common.ui.javafx.lwfxef.EDragGesture;
import org.fortiss.tooling.common.ui.javafx.lwfxef.change.Change;
import org.fortiss.tooling.common.ui.javafx.lwfxef.controller.IController;
import org.fortiss.tooling.common.ui.javafx.lwfxef.controller.IDragController;
import org.fortiss.tooling.common.ui.javafx.lwfxef.controller.IKeyPressController;
import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IContentAnchorageMVCBundle;
import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IContentMVCBundle;
import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IMVCBundle;
import javafx.scene.Cursor;
import javafx.scene.Node;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
/**
* Default {@link IController} implementation for moving anchorage visuals attached to a parent
......@@ -56,6 +62,46 @@ public class DelegatingContentAnchorageController extends ControllerBase {
return super.getDragController(gesture, node, diagramLocation);
}
/** {@inheritDoc} */
@Override
public IKeyPressController getKeyPressController(Node node,
DiagramCoordinate lastMouseLocation) {
return defaultKeyPressControllerWithMove;
}
/**
* The default implementation for key press controller allowing move with cursor keys and delete
* with the delete key.
*/
private final IKeyPressController defaultKeyPressControllerWithMove =
new IKeyPressController() {
@Override
public Change keyEvent(KeyEvent event, IMVCBundle bundle, Node source,
DiagramCoordinate mouseLocation) {
DiagramViewer viewer = getViewer();
KeyCode code = event.getCode();
if(code == KeyCode.DELETE) {
return new Change() {
@Override
public void applyChange() {
delete();
}
};
}
if(code == KeyCode.A && event.isControlDown()) {
viewer.selectAll();
return null;
}
if(allowMove()) {
if(code == KeyCode.UP || code == KeyCode.DOWN || code == KeyCode.LEFT ||
code == KeyCode.RIGHT) {
return keyMove(code);
}
}
return null;
}
};
/** {@inheritDoc} */
@Override
public Cursor getCurrentCursor(Node node, DiagramCoordinate diagramLocation) {
......@@ -70,4 +116,15 @@ public class DelegatingContentAnchorageController extends ControllerBase {
protected boolean allowMove() {
return true;
}
/**
* Performs the keyboard move by returning a corresponding {@link Change}.
*
* @param code
* the arrow key code
* @return the {@link Change}, which executes the move operation.
*/
protected Change keyMove(KeyCode code) {
return null;
}
}
......@@ -131,11 +131,7 @@ public abstract class LinkControllerBase extends MVCBundlePartBase implements IC
DiagramCoordinate snappedLocation = features.snapToCenter(diagramLocation);
return () -> createBendPointAt(currentBendPointIndex, snappedLocation);
}
if(event.isShiftDown()) {
viewer.handleShiftSelectionOf(getMVCBundle());
} else {
viewer.setSingleSelectedMVCBundle(getMVCBundle());
}
viewer.setSingleSelectedMVCBundle(getMVCBundle());
return null;
}
......@@ -396,7 +392,7 @@ public abstract class LinkControllerBase extends MVCBundlePartBase implements IC
/** {@inheritDoc} */
@Override
public boolean selectOnShiftMousePress() {
public boolean selectOnCtrlMousePress() {
return true;
}
......
CircularResizableContentControllerBase.java daf05a58eac298462a5f092503e506575b31dff1 GREEN
CurveLinkBendPointControllerBase.java 4d119cd640b864f2193ea5c1a7f816310b7a57a4 GREEN
EllipticResizableContentControllerBase.java 42bcbdbf29c1cf2b71177e55f74358d1517d623f GREEN
EllipticResizableContentControllerBase.java 636f7c8683f90035d240411f96d1f40d504ffb19 GREEN
......@@ -68,7 +68,7 @@ public abstract class EllipticResizableContentControllerBase
@Override
protected void moveAnchorage(DiagramCoordinate delta) {
EllipticBorderLocation rbl = getBorderLocation(delta);
moveAnchorageToAngle(anchorage, rbl.getAngleInDegree());
moveAnchorageToAngle(anchorage, 360 - rbl.getAngleInDegree());
}
}
......
......@@ -6,7 +6,7 @@ EReferencePropertySectionBase.java 0548da6778516003257f59d0b4c2b60d458be3b6 GREE
EditorBase.java 9c09fff92945256bb8680992ae7bb2c78f47b150 GREEN
FXEditorBase.java 40caf638c7b4c02da5aece0d9d58883bce630e76 GREEN
IListPropertySection.java 8bb00fe7959583e794ff9437b7a77404c9a9e70f GREEN
LWFXEFEditorBase.java f6b160b700a0287021402b5702beb2bfdce3dc2e GREEN
LWFXEFEditorBase.java 86fb5b558794ffa6471ca343934592b6fa4277f6 GREEN
ModelEditorBindingBase.java b9b1a1c5a48a6e677d1f57ad55a6126d9703c4b5 GREEN
ModelElementHandlerBase.java d0efc1e9ca2fbbefb861f1ae8176ad9ec08a08a8 GREEN
MultiEObjectActionBase.java 9e237d8ea640c4194e4877af4a9cfce88698e543 GREEN
......
......@@ -27,6 +27,7 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.IEditorPart;
import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramViewer;
import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramViewerFeatures;
import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramViewerSelection;
import org.fortiss.tooling.common.ui.javafx.lwfxef.change.Change;
import org.fortiss.tooling.common.ui.javafx.lwfxef.controller.IControllerFactory;
......@@ -68,6 +69,10 @@ public abstract class LWFXEFEditorBase<T extends EObject> extends FXEditorBase<T
viewer = new DiagramViewer(delegatingModelFactory, delegatingVisualFactory,
delegatingControllerFactory, cb -> modelSelected(), chg -> applyModelChange(chg));
DiagramViewerFeatures features = viewer.getFeatures();
// extend zoom factors
features.setZoomFactors(new double[] {0.5, 0.75, 1, 1.5, 2, 4, 6});
features.setZoomFactorIndex(2); // Zoom x1
customizeViewer();
return viewer.getVisualNode();
}
......
ActionUtils.java 4553e487264e3d1f86f4767da4a7400cce4b9a5d GREEN
CopyPasteUtils.java bbc5cf9c9dc03ebf8dc75d42c919fe6eb60b388e GREEN
CopyPasteUtils.java 62ac1094c1d56c83251b01ce7b52c2217625a79c GREEN
DataBindingUtils.java 631c47881caa13fc567679a7e4416eb777af0713 GREEN
DragAndDropUtils.java 7aab91518aa12d76533a345bf6ed0be9ac7ff0e5 GREEN
EObjectSelectionUtils.java 128cf8f96c6b9478171dff3deda662d5934f5f44 GREEN
......
......@@ -23,7 +23,6 @@ import java.util.Collection;
import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.swt.dnd.Clipboard;
......@@ -36,7 +35,6 @@ import org.eclipse.ui.PlatformUI;
import org.fortiss.tooling.kernel.extension.data.IElementCompositionContext;
import org.fortiss.tooling.kernel.model.INamedElement;
import org.fortiss.tooling.kernel.model.ISpeciallyCopyiable;
import org.fortiss.tooling.kernel.model.constraints.IConstrained;
import org.fortiss.tooling.kernel.service.IElementCompositorService;
import org.fortiss.tooling.kernel.ui.dnd.CompositionServiceLocalCopyPasteTransfer;
import org.fortiss.tooling.kernel.ui.internal.editor.ExtendableMultiPageEditor;
......@@ -65,15 +63,6 @@ public class CopyPasteUtils {
EcoreUtil.Copier copier = new EcoreUtil.Copier(true, true);
for(EObject obj : sel) {
content[i] = copier.copy(obj);
// Remove constraint instances: these are specific to their original elements and
// should not be copied.
TreeIterator<EObject> it = content[i].eAllContents();
while(it.hasNext()) {
EObject subObj = it.next();
if(subObj instanceof IConstrained) {
((IConstrained)subObj).getConstraintInstances().clear();
}
}
i++;
}
copier.copyReferences();
......
......@@ -24,9 +24,6 @@ Export-Package: org.fortiss.tooling.kernel;uses:="org.eclipse.core.runtime,
org.fortiss.tooling.kernel.introspection,
org.fortiss.tooling.kernel.introspection.items,
org.fortiss.tooling.kernel.model;uses:=org.eclipse.emf.ecore,
org.fortiss.tooling.kernel.model.constraints,
org.fortiss.tooling.kernel.model.constraints.impl,
org.fortiss.tooling.kernel.model.constraints.util,
org.fortiss.tooling.kernel.model.impl;uses:=org.fortiss.tooling.kernel.model,
org.fortiss.tooling.kernel.model.util;uses:="org.eclipse.emf.ecore,
org.fortiss.tooling.kernel.model,
......
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