Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • af3/kernel
  • diewald/kernel
2 results
Show changes
Showing
with 266 additions and 148 deletions
DynamicTreeContentProviderBase.java dff437afeaf7486af05460fa54eca4fa61d7eae6 GREEN
DynamicTreeItem.java afc105cf5acf3d2506d89e0892555100c234ce5b GREEN
DynamicTreeTableUIProviderBase.java fd9fce19a65eb1006ceacb0d869bbe90a8c578b3 GREEN
DynamicTreeTableViewer.java 4f278387dd90542adc07bf0da12e92d4eaad79c4 GREEN
DynamicTreeContentProviderBase.java e801da995a1b6e5a1b757247c1638bafb6073e6d GREEN
DynamicTreeItem.java 75dc5534b119ffdb3c10a65810c2a0f330b7955e GREEN
DynamicTreeTableUIProviderBase.java 7bfc1395283d3dc10026aff5e2e65df88d25f3a7 GREEN
DynamicTreeTableViewer.java 43757359b3071192ae79710bcbc0e9577bb6f62d GREEN
DynamicTreeUIProviderBase.java 56fe4df4577b35f1e5e6e4c4be189b706c852d52 GREEN
DynamicTreeViewer.java da5e24ae57777a482d8e12c8262513d8143bfa93 GREEN
DynamicTreeViewerBase.java 47124c847de322a0ae26eb7a114f85ce4bd02d7e GREEN
......
......@@ -30,13 +30,43 @@ public abstract class DynamicTreeContentProviderBase<T> {
/** Returns the children of the given parent in the tree. */
protected abstract Collection<? extends T> getChildren(T parent);
/** Returns the filer predicate. */
protected Predicate<Object> getFilterPredicate() {
/** The current filter expression. */
private String filterExpression = null;
/** Sets the filter expression. */
public void setFilterExpression(String filterExpression) {
this.filterExpression = filterExpression;
}
/**
* Returns the filter expression. Sub-classes may override or simply use
* {@link #setFilterExpression(String)}
*/
protected String getFilterExpression() {
return filterExpression;
}
/**
* Returns the filter predicate for the given filter value. The default checks if the object's
* toString() contains the filter value. Sub-classes may override or implement
* {@link #filter(Object, String)}.
*/
protected Predicate<T> getFilterPredicate(String filterValue) {
if(filterValue != null && !"".equals(filterValue.trim())) {
return (o) -> {
return filter(o, filterValue);
};
}
return (o) -> true;
}
/** Sub-classes may override to implement simple filter behavior. */
protected boolean filter(T element, String filterValue) {
return element != null && element.toString().contains(filterValue);
}
/** Returns the sorter comparator. */
protected Comparator<Object> getSortingComparator() {
protected Comparator<T> getSortingComparator() {
return (o1, o2) -> 0;
}
......@@ -46,7 +76,7 @@ public abstract class DynamicTreeContentProviderBase<T> {
if(l == null) {
return emptyList();
}
return l.stream().filter(getFilterPredicate()).sorted(getSortingComparator())
.collect(toList());
return l.stream().filter(getFilterPredicate(getFilterExpression()))
.sorted(getSortingComparator()).collect(toList());
}
}
......@@ -21,8 +21,8 @@ import java.util.HashMap;
import javafx.scene.control.TreeItem;
/**
* {@link TreeItem} with support for dynamic children using the {@link DynamicTreeItem#update()}
* method.
* {@link TreeItem} with support for dynamic children using the
* {@link DynamicTreeItem#update()} method.
*/
public class DynamicTreeItem<T> extends TreeItem<T> {
/** The viewer. */
......@@ -45,7 +45,8 @@ public class DynamicTreeItem<T> extends TreeItem<T> {
}
// get list of children and create tree items
getChildren().clear();
for(T element : viewer.getContentProvider().getFilteredSortedChildren(getValue())) {
DynamicTreeContentProviderBase<T> cp = viewer.getContentProvider();
for(T element : cp.getFilteredSortedChildren(getValue())) {
DynamicTreeItem<T> dti;
if(expanded.containsKey(element)) {
dti = (DynamicTreeItem<T>)expanded.get(element);
......
......@@ -13,14 +13,19 @@
*******************************************************************************/
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.TreeTableCell;
import javafx.scene.control.TreeTableColumn;
import javafx.util.Callback;
/**
* This UI provider is responsible to return the label, the icon, and the context menu for each cell
* in the {@link DynamicTreeTableViewer} based on the data object and the column.
*/
public abstract class DynamicTreeTableUIProviderBase {
public abstract class DynamicTreeTableUIProviderBase<T> {
/**
* @param element
* the element to be displayed in the current row
......@@ -28,7 +33,7 @@ public abstract class DynamicTreeTableUIProviderBase {
* the current column
* @return the label to be displayed in the given column
*/
public String getLabel(Object element, int column) {
public String getLabel(T element, int column) {
return "";
}
......@@ -39,7 +44,7 @@ public abstract class DynamicTreeTableUIProviderBase {
* the current column
* @return the node to be displayed as the icon in the given column
*/
public Node getIconNode(Object element, int column) {
public Node getIconNode(T element, int column) {
return null;
}
......@@ -50,7 +55,94 @@ public abstract class DynamicTreeTableUIProviderBase {
* the current column
* @return the context menu in the given column
*/
public ContextMenu createContextMenu(Object element, int column) {
public ContextMenu createContextMenu(T element, int column) {
return null;
}
/**
* Returns whether the given column is editable.
*
* @param column
* the column index
* @return whether the column is editable
*/
public boolean isEditable(int column) {
return false;
}
/**
* Updates the value after the given column was edited for the given element.
*
* @param element
* the element to be edited in the current row
* @param column
* the currently edited column
* @param value
* the edited value
*/
public void updateValue(T element, int column, String value) {
// ignored, since not editable
}
/**
* Notifies the provider about the selection of the given new value (and the deselection of the
* given old value.
*
* @param oldValue
* unselected value
* @param newValue
* the selected value
*/
public void select(T oldValue, T newValue) {
// ignored
}
/** Applies the editing support to the given column. */
/* package */ final void applyToColumn(int i, TreeTableColumn<T, String> column) {
if(!isEditable(i)) {
column.setCellFactory(createReadOnlyCellFactory(i));
column.setEditable(false);
column.setOnEditCommit(null);
return;
}
column.setCellFactory(createEditableCellFactory());
column.setEditable(true);
column.setOnEditCommit(event -> {
T element = event.getRowValue().getValue();
int colIndex = event.getTreeTablePosition().getColumn();
String value = event.getNewValue();
updateValue(element, colIndex, value);
column.getTreeTableView().refresh();
});
}
/** Creates a cell factory for editable cells. */
private Callback<TreeTableColumn<T, String>, TreeTableCell<T, String>>
createEditableCellFactory() {
return forTreeTableColumn();
}
/** Creates a cell factory for read-only cells. */
private Callback<TreeTableColumn<T, String>, TreeTableCell<T, String>>
createReadOnlyCellFactory(int colIndex) {
return param -> {
TreeTableCell<T, String> cell = new TreeTableCell<T, String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
ContextMenu menu = null;
Node icon = null;
if(!empty && item != null) {
T data = this.getTreeTableRow().getItem();
menu = createContextMenu(data, colIndex);
icon = getIconNode(data, colIndex);
}
this.setContextMenu(menu);
this.setGraphic(icon);
}
};
cell.textProperty().bind(cell.itemProperty());
return cell;
};
}
}
......@@ -15,17 +15,12 @@
*******************************************************************************/
package org.fortiss.tooling.common.ui.javafx.control.treetableview;
import static javafx.scene.control.cell.TextFieldTreeTableCell.forTreeTableColumn;
import javafx.beans.property.SimpleObjectProperty;
import javafx.scene.Node;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeTableCell;
import javafx.scene.control.TreeTableColumn;
import javafx.scene.control.TreeTableView;
import javafx.util.Callback;
import javafx.scene.control.TreeTableView.TreeTableViewSelectionModel;
/**
* A JavaFX {@link TreeTableView} based on an {@link DynamicTreeContentProviderBase} and
......@@ -42,12 +37,12 @@ public final class DynamicTreeTableViewer<T> extends DynamicTreeViewerBase<T> {
/** The {@link TreeTableView} control to be managed. */
private final TreeTableView<T> view;
/** The UI provider of this tree-table. */
private final DynamicTreeTableUIProviderBase uiProvider;
private final DynamicTreeTableUIProviderBase<T> uiProvider;
/** Constructor. */
public DynamicTreeTableViewer(TreeTableView<T> view, T root, boolean showRoot, int revealLevel,
DynamicTreeContentProviderBase<T> contentProvider,
DynamicTreeTableUIProviderBase uiProvider) {
DynamicTreeTableUIProviderBase<T> uiProvider) {
super(contentProvider);
this.uiProvider = uiProvider;
// construct view
......@@ -56,7 +51,14 @@ public final class DynamicTreeTableViewer<T> extends DynamicTreeViewerBase<T> {
view.setRoot(rootItem);
view.setShowRoot(showRoot);
view.setEditable(true);
view.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
TreeTableViewSelectionModel<T> selectionModel = view.getSelectionModel();
selectionModel.setSelectionMode(SelectionMode.MULTIPLE);
selectionModel.selectedItemProperty().addListener((obs, oVal, nVal) -> {
T ov = (oVal != null) ? oVal.getValue() : null;
T nv = (nVal != null) ? nVal.getValue() : null;
uiProvider.select(ov, nv);
});
rootItem.update();
// expand to reveal (+1 if root node is not shown
expandItem(rootItem, showRoot ? revealLevel : revealLevel + 1);
......@@ -65,7 +67,7 @@ public final class DynamicTreeTableViewer<T> extends DynamicTreeViewerBase<T> {
/** Constructor. */
public DynamicTreeTableViewer(T root, boolean showRoot, int revealLevel,
DynamicTreeContentProviderBase<T> contentProvider,
DynamicTreeTableUIProviderBase uiProvider) {
DynamicTreeTableUIProviderBase<T> uiProvider) {
this(new TreeTableView<T>(), root, showRoot, revealLevel, contentProvider, uiProvider);
}
......@@ -74,6 +76,7 @@ public final class DynamicTreeTableViewer<T> extends DynamicTreeViewerBase<T> {
// wild cast works: see constructor
DynamicTreeItem<T> rootItem = (DynamicTreeItem<T>)view.getRoot();
rootItem.update();
view.refresh();
}
/** Expands items up to the given level. */
......@@ -92,51 +95,33 @@ public final class DynamicTreeTableViewer<T> extends DynamicTreeViewerBase<T> {
* Adds a column to the table part of the view. The labels, context menus and icons are shown as
* defined in the {@link DynamicTreeTableUIProviderBase}.
*/
public TreeTableColumn<T, String> addColumn(String headerLabel, int prefWidth,
boolean readOnly) {
public TreeTableColumn<T, String> addColumn(String headerLabel, int prefWidth) {
int num = view.getColumns().size();
TreeTableColumn<T, String> column = new TreeTableColumn<>(headerLabel);
column.setPrefWidth(prefWidth);
column.setCellValueFactory(param -> {
Object data = param.getValue().getValue();
T data = param.getValue().getValue();
return new SimpleObjectProperty<String>(uiProvider.getLabel(data, num));
});
Callback<TreeTableColumn<T, String>, TreeTableCell<T, String>> cellFactory;
if(readOnly) {
// Read only cell with the icon and context menu as specified in the UI provider
cellFactory = param -> {
TreeTableCell<T, String> cell = new TreeTableCell<T, String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
ContextMenu menu = null;
Node icon = null;
int index = view.getColumns().size() - 1;
if(!empty && item != null) {
T data = this.getTreeTableRow().getItem();
menu = uiProvider.createContextMenu(data, index);
icon = uiProvider.getIconNode(data, index);
}
this.setContextMenu(menu);
this.setGraphic(icon);
}
};
cell.textProperty().bind(cell.itemProperty());
return cell;
};
} else {
// Editable text field
cellFactory = forTreeTableColumn();
}
column.setCellFactory(cellFactory);
uiProvider.applyToColumn(num, column);
view.getColumns().add(column);
return column;
}
/**
* Adds a column to the table part of the view. The labels, context menus and icons are shown as
* defined in the {@link DynamicTreeTableUIProviderBase}.
*
* @deprecated use {@link DynamicTreeTableUIProviderBase}
*/
@Deprecated
public TreeTableColumn<T, String> addColumn(String headerLabel, int prefWidth,
@SuppressWarnings("unused") boolean readOnly) {
return addColumn(headerLabel, prefWidth);
}
/** Returns the underlying {@link TreeTableView}. */
public TreeTableView<T> getControl() {
return view;
......
DiagramCoordinate.java 6b00aec99054d4cd19003a72bd4e5e774ac6a641 YELLOW
DiagramLayers.java 155cbb47a5f0aaa0025320ae607e6777f3a2d2e8 YELLOW
DiagramViewer.java d5ba3f45ddc619132434f9cbefd36f65cce18b65 YELLOW
DiagramViewerDefaultTags.java 6230763252409c60009ab8887b4ef582cf883229 YELLOW
DiagramViewerFeatures.java 31e3fb61f915b0d8695005b083c47ce1c5be0b05 YELLOW
DiagramViewerSelection.java e833f592543bc97077907d980a39b123fc4044e6 YELLOW
EDragGesture.java 5cfa098d3877db11981c2750e5e103156d62fc5e YELLOW
FeedbackChange.java b088fa89af648f1674f2f9c1f7f99d585ce801ca YELLOW
GridCanvasVisual.java 734027d56af342cd01ff445ba9347b8dbb6c83c2 YELLOW
MVCBundleManager.java 2b4ab114c55b30a3d98d7135458f8f3ddd244d58 YELLOW
MouseState.java ff90af6d1cca427ef6f3fded76367b535120a5df YELLOW
SVGExporter.java 2211f06d81c7b0523ae52dc832410a76875a9e07 YELLOW
DiagramCoordinate.java 6b00aec99054d4cd19003a72bd4e5e774ac6a641 GREEN
DiagramLayers.java 155cbb47a5f0aaa0025320ae607e6777f3a2d2e8 GREEN
DiagramViewer.java e7c550be6443f798ba9399a35ab3059033a33e59 RED
DiagramViewerDefaultTags.java 6230763252409c60009ab8887b4ef582cf883229 GREEN
DiagramViewerFeatures.java 31e3fb61f915b0d8695005b083c47ce1c5be0b05 GREEN
DiagramViewerSelection.java e833f592543bc97077907d980a39b123fc4044e6 GREEN
EDragGesture.java 5cfa098d3877db11981c2750e5e103156d62fc5e GREEN
FeedbackChange.java b088fa89af648f1674f2f9c1f7f99d585ce801ca GREEN
GridCanvasVisual.java 734027d56af342cd01ff445ba9347b8dbb6c83c2 GREEN
MVCBundleManager.java 2b4ab114c55b30a3d98d7135458f8f3ddd244d58 GREEN
MouseState.java ff90af6d1cca427ef6f3fded76367b535120a5df GREEN
SVGExporter.java 2211f06d81c7b0523ae52dc832410a76875a9e07 GREEN
......@@ -9,6 +9,7 @@
*******************************************************************************/
package org.fortiss.tooling.common.ui.javafx.lwfxef;
import static java.lang.Math.abs;
import static java.lang.Math.ceil;
import static java.lang.Math.max;
import static java.lang.Math.min;
......@@ -117,6 +118,7 @@ public class DiagramViewer {
// selection feedback rectangle
mouseDragRectangle.setFill(Color.TRANSPARENT);
mouseDragRectangle.setStroke(Color.ORANGERED);
// TODO (SB): Magic constant
mouseDragRectangle.getStrokeDashArray().addAll(15.0, 5.0);
mouseDragRectangle.setMouseTransparent(true);
// viewer pane
......@@ -556,13 +558,13 @@ public class DiagramViewer {
return;
}
Point2D location = locationInDiagram;
double x = Math.min(mouseDragRectangleStartLocation.getX(), location.getX());
double x = min(mouseDragRectangleStartLocation.getX(), location.getX());
mouseDragRectangle.setX(x);
double w = Math.abs(mouseDragRectangleStartLocation.getX() - location.getX());
double w = abs(mouseDragRectangleStartLocation.getX() - location.getX());
mouseDragRectangle.setWidth(w);
double y = Math.min(mouseDragRectangleStartLocation.getY(), location.getY());
double y = min(mouseDragRectangleStartLocation.getY(), location.getY());
mouseDragRectangle.setY(y);
double h = Math.abs(mouseDragRectangleStartLocation.getY() - location.getY());
double h = abs(mouseDragRectangleStartLocation.getY() - location.getY());
mouseDragRectangle.setHeight(h);
}
......@@ -572,10 +574,10 @@ public class DiagramViewer {
return;
}
Point2D location = locationInDiagram;
double x = Math.min(mouseDragRectangleStartLocation.getX(), location.getX());
double w = Math.abs(mouseDragRectangleStartLocation.getX() - location.getX());
double y = Math.min(mouseDragRectangleStartLocation.getY(), location.getY());
double h = Math.abs(mouseDragRectangleStartLocation.getY() - location.getY());
double x = min(mouseDragRectangleStartLocation.getX(), location.getX());
double w = abs(mouseDragRectangleStartLocation.getX() - location.getX());
double y = min(mouseDragRectangleStartLocation.getY(), location.getY());
double h = abs(mouseDragRectangleStartLocation.getY() - location.getY());
layers.getVisualFeedbackLayer().remove(mouseDragRectangle);
Rectangle2D selectionRect = new Rectangle2D(x, y, w, h);
// remove old selection
......
Change.java e907a516f1369013cbb3d5d002b1ddb69cd5cc25 YELLOW
ChangeSet.java 363c4fcdad1709e6f7ccad4205a53b22c976b50d YELLOW
DefaultModelModifier.java bfa32a76ce226ec84a173201553b87d6317b84b1 YELLOW
Change.java e907a516f1369013cbb3d5d002b1ddb69cd5cc25 GREEN
ChangeSet.java 363c4fcdad1709e6f7ccad4205a53b22c976b50d GREEN
DefaultModelModifier.java bfa32a76ce226ec84a173201553b87d6317b84b1 GREEN
IClickController.java c0270e99d918aef14612d46f3e84905d3a6bdd8c YELLOW
IController.java 6ba069977e7588f97187916c23a0e37f7cb91059 YELLOW
IControllerFactory.java 85b86eda643489f2a03454eae5383915ecf27f83 YELLOW
IDragController.java c1f311d2ae9ed684c8a7cd85e9ed1f85e79658d1 YELLOW
IKeyPressController.java dc8fe2a7c441866122e8c7b3114fd12d17f0b051 YELLOW
IClickController.java c0270e99d918aef14612d46f3e84905d3a6bdd8c GREEN
IController.java 6ba069977e7588f97187916c23a0e37f7cb91059 GREEN
IControllerFactory.java 85b86eda643489f2a03454eae5383915ecf27f83 GREEN
IDragController.java c1f311d2ae9ed684c8a7cd85e9ed1f85e79658d1 GREEN
IKeyPressController.java dc8fe2a7c441866122e8c7b3114fd12d17f0b051 GREEN
AnchorageContentControllerBase.java da56b10cbf2711b5da69f0b59f43eacbe54f4eea YELLOW
ClickControllerBase.java 8e5861ed5f9318008ad0fdd5497ed320cd5bd647 YELLOW
ContentAnchorageMoveControllerBase.java c18e7915ce23e124757f5b736086ecc46694800a YELLOW
ControllerBase.java 309e9ee3f3a255b5a06fed8f1b4d4ec8bf88f101 YELLOW
DefaultDiagramController.java 0e083b89a08f63967102a384d66ebc1d64d203af YELLOW
DelegatingContentAnchorageController.java 2e3b1b4e14402a3503233f816b21ef3e4aa09edc YELLOW
DragControllerBase.java b15ff874304f679fe494d85f57cc8cbe4d0d1d15 YELLOW
DraggingUtils.java 95117e2ea4c36b6c6a31f8088bb95b484e0e6612 YELLOW
LinkControllerBase.java 392cb79cb42e9f878c665d47053b0795c3768603 YELLOW
MoveControllerBase.java 38d632e31f5e27d112ecdd4933e3a331378180d0 YELLOW
ResizableContentControllerBase.java 898500d389b035f8138308d496d2d24be501c719 YELLOW
AnchorageContentControllerBase.java da56b10cbf2711b5da69f0b59f43eacbe54f4eea GREEN
ClickControllerBase.java 8e5861ed5f9318008ad0fdd5497ed320cd5bd647 GREEN
ContentAnchorageMoveControllerBase.java c18e7915ce23e124757f5b736086ecc46694800a GREEN
ControllerBase.java 309e9ee3f3a255b5a06fed8f1b4d4ec8bf88f101 GREEN
DefaultDiagramController.java 0e083b89a08f63967102a384d66ebc1d64d203af GREEN
DelegatingContentAnchorageController.java 2e3b1b4e14402a3503233f816b21ef3e4aa09edc GREEN
DragControllerBase.java b15ff874304f679fe494d85f57cc8cbe4d0d1d15 GREEN
DraggingUtils.java 95117e2ea4c36b6c6a31f8088bb95b484e0e6612 GREEN
LinkControllerBase.java 392cb79cb42e9f878c665d47053b0795c3768603 GREEN
MoveControllerBase.java 38d632e31f5e27d112ecdd4933e3a331378180d0 GREEN
ResizableContentControllerBase.java 898500d389b035f8138308d496d2d24be501c719 GREEN
CircularResizableContentControllerBase.java daf05a58eac298462a5f092503e506575b31dff1 YELLOW
CurveLinkBendPointControllerBase.java 4d119cd640b864f2193ea5c1a7f816310b7a57a4 YELLOW
EllipticResizableContentControllerBase.java 42bcbdbf29c1cf2b71177e55f74358d1517d623f YELLOW
CircularResizableContentControllerBase.java daf05a58eac298462a5f092503e506575b31dff1 GREEN
CurveLinkBendPointControllerBase.java 4d119cd640b864f2193ea5c1a7f816310b7a57a4 GREEN
EllipticResizableContentControllerBase.java 42bcbdbf29c1cf2b71177e55f74358d1517d623f GREEN
DiamondResizableContentControllerBase.java 31f227e88205bd2e131326bdddd8421991b47d79 YELLOW
RectangularContentAnchorageMoveController.java c119b011f5a38933cee07b8082fcd44c6c3b0037 YELLOW
RectangularResizableContentControllerBase.java 262b083e4e0ce842b0bb8fbb594585e9f0d2f678 YELLOW
RhomboidContentAnchorageMoveController.java fbd40ce483f99c18cfa94076374f572bb72c2646 YELLOW
RhomboidResizableContentControllerBase.java 863b9eae49bad18f71b20c8cde4b0f350348aa27 YELLOW
DiamondResizableContentControllerBase.java 31f227e88205bd2e131326bdddd8421991b47d79 GREEN
RectangularContentAnchorageMoveController.java c119b011f5a38933cee07b8082fcd44c6c3b0037 GREEN
RectangularResizableContentControllerBase.java 262b083e4e0ce842b0bb8fbb594585e9f0d2f678 GREEN
RhomboidContentAnchorageMoveController.java fbd40ce483f99c18cfa94076374f572bb72c2646 GREEN
RhomboidResizableContentControllerBase.java 863b9eae49bad18f71b20c8cde4b0f350348aa27 GREEN
IModelChangeListener.java 241a583a3517ad504ad0a2d5a8f4d98afee8fd8b YELLOW
IModelChangeProvider.java bc7622c4af211e3ee470d12b80d04a92880f0d38 YELLOW
IModelFactory.java 3b6a1cb2779af0215a2637c40428b42600ef4ffb YELLOW
ModelChangeProviderBase.java eb5ad0363e30f727a70c42edb3d781acb6e6add6 YELLOW
ModelFactoryBase.java 6d0e1e5658c592f3f98d3bcf68bdbb54a506c489 YELLOW
IModelChangeListener.java 241a583a3517ad504ad0a2d5a8f4d98afee8fd8b GREEN
IModelChangeProvider.java bc7622c4af211e3ee470d12b80d04a92880f0d38 GREEN
IModelFactory.java 3b6a1cb2779af0215a2637c40428b42600ef4ffb GREEN
ModelChangeProviderBase.java eb5ad0363e30f727a70c42edb3d781acb6e6add6 GREEN
ModelFactoryBase.java 6d0e1e5658c592f3f98d3bcf68bdbb54a506c489 GREEN
IAngleLayout.java 4993d53870c2a71dc63e8a99ceb47df6cfec3801 YELLOW
ILayout.java e6fd2a1ac953a18c8ea8951e594e44a1c0fc8d92 YELLOW
IOffsetLayout.java 440551f07a2af2ceb000b14177cc2351cb1b7f52 YELLOW
IPointsLayout.java be1c706ae6e782d6ac960e02e6855f8d2118914b YELLOW
ISideLayout.java 20b14640a7424a013338e6683b9f4cf6e62f01e1 YELLOW
IXYLayout.java e3e007db33846621bf6844621360b5881f7f6023 YELLOW
IAngleLayout.java 4993d53870c2a71dc63e8a99ceb47df6cfec3801 GREEN
ILayout.java e6fd2a1ac953a18c8ea8951e594e44a1c0fc8d92 GREEN
IOffsetLayout.java 440551f07a2af2ceb000b14177cc2351cb1b7f52 GREEN
IPointsLayout.java be1c706ae6e782d6ac960e02e6855f8d2118914b GREEN
ISideLayout.java 20b14640a7424a013338e6683b9f4cf6e62f01e1 GREEN
IXYLayout.java e3e007db33846621bf6844621360b5881f7f6023 GREEN
IAnchorageMVCBundle.java 17671d1ef6ecc4d1b4b98cf9d83016b31455346d YELLOW
IContentAnchorageMVCBundle.java c3bd9eb5266d0f87b16cdd16aeaadbfa6eeb49de YELLOW
IContentMVCBundle.java f84f8e59af85d022c2019d271d957821c5c55d3f YELLOW
IContentMVCBundleWithParent.java 890ffcacb493fda5ead5b7f74dc7ae1637077526 YELLOW
IDiagramAnchorageMVCBundle.java c49ef7ca7457ea9d4557251263779b403f79e69c YELLOW
IDiagramMVCBundle.java 354facfc00887726a6d7553d40824b7171865330 YELLOW
ILinkMVCBundle.java a2b1527f98ed642def2346190f6a71016ca674af YELLOW
IMVCBundle.java 19a6cc6bc96c42dd98dca24288a050ff0ba04734 YELLOW
IMVCBundlePart.java 6ddc90167a6ee7410876150e1785840f6ad32912 YELLOW
MVCBundleTag.java cf428833f24caccd74945119cf906b19daa3d63b YELLOW
IAnchorageMVCBundle.java 17671d1ef6ecc4d1b4b98cf9d83016b31455346d GREEN
IContentAnchorageMVCBundle.java c3bd9eb5266d0f87b16cdd16aeaadbfa6eeb49de GREEN
IContentMVCBundle.java f84f8e59af85d022c2019d271d957821c5c55d3f GREEN
IContentMVCBundleWithParent.java 890ffcacb493fda5ead5b7f74dc7ae1637077526 GREEN
IDiagramAnchorageMVCBundle.java c49ef7ca7457ea9d4557251263779b403f79e69c GREEN
IDiagramMVCBundle.java 354facfc00887726a6d7553d40824b7171865330 GREEN
ILinkMVCBundle.java a2b1527f98ed642def2346190f6a71016ca674af GREEN
IMVCBundle.java 19a6cc6bc96c42dd98dca24288a050ff0ba04734 GREEN
IMVCBundlePart.java 6ddc90167a6ee7410876150e1785840f6ad32912 GREEN
MVCBundleTag.java cf428833f24caccd74945119cf906b19daa3d63b GREEN
AnchorageMVCBundleBase.java 63dc967da3342d402603adcc005344ce89386ea8 YELLOW
ContentAnchorageMVCBundle.java 1a517903c6400203cb7850502671e01d715f2453 YELLOW
ContentMVCBundle.java ee8a2c7780b64d61cf3e196437ce5ab07ad29e7c YELLOW
DiagramAnchorageMVCBundle.java b0f12259bbb8ccbf68b0774eb76c060188f4fea2 YELLOW
DiagramMVCBundle.java 46860e820c67f985cd75704b9084948df1939ee8 YELLOW
LinkMVCBundle.java b8246cd0e6f6ff53b377a9a0c4d1c8e4aa6371c4 YELLOW
MVCBundleBase.java 0a1b561e6ed5a5b4a3d2fdf52e2e5839c770193b YELLOW
MVCBundlePartBase.java 9e56b3799f14fe63649a09130edbdef083b87fdc YELLOW
AnchorageMVCBundleBase.java 63dc967da3342d402603adcc005344ce89386ea8 GREEN
ContentAnchorageMVCBundle.java 1a517903c6400203cb7850502671e01d715f2453 GREEN
ContentMVCBundle.java ee8a2c7780b64d61cf3e196437ce5ab07ad29e7c GREEN
DiagramAnchorageMVCBundle.java b0f12259bbb8ccbf68b0774eb76c060188f4fea2 GREEN
DiagramMVCBundle.java 46860e820c67f985cd75704b9084948df1939ee8 GREEN
LinkMVCBundle.java b8246cd0e6f6ff53b377a9a0c4d1c8e4aa6371c4 GREEN
MVCBundleBase.java 0a1b561e6ed5a5b4a3d2fdf52e2e5839c770193b GREEN
MVCBundlePartBase.java 9e56b3799f14fe63649a09130edbdef083b87fdc GREEN
IAnchorageVisual.java e742212c132db1e2309650f5d6e40bc79c2ff85a YELLOW
IContentAnchorageVisual.java 3a3ceb675820f151aa678b6caa0f1ae833da1b7f YELLOW
IContentVisual.java 1052ece1f6172799204b1d7524398766c3b7a12e YELLOW
IDiagramAnchorageVisual.java ae0895912fe735147ccd11b7f466a7a5b61c3ca5 YELLOW
ILinkVisual.java 8f9bd6cf7c423a78d67fab0a20ba2dad2dfbd55e YELLOW
IVisual.java 400569502788bf2efff3de84f2c53b65256b3fc4 YELLOW
IVisualFactory.java 39253dc705f7f73ddbb83d050232a19219d54e71 YELLOW
IAnchorageVisual.java e742212c132db1e2309650f5d6e40bc79c2ff85a GREEN
IContentAnchorageVisual.java 3a3ceb675820f151aa678b6caa0f1ae833da1b7f GREEN
IContentVisual.java 1052ece1f6172799204b1d7524398766c3b7a12e GREEN
IDiagramAnchorageVisual.java ae0895912fe735147ccd11b7f466a7a5b61c3ca5 GREEN
ILinkVisual.java 8f9bd6cf7c423a78d67fab0a20ba2dad2dfbd55e GREEN
IVisual.java 400569502788bf2efff3de84f2c53b65256b3fc4 GREEN
IVisualFactory.java 39253dc705f7f73ddbb83d050232a19219d54e71 GREEN
ContentAnchorageVisualBase.java 6722629a940e9f8d973d2176bc3855932d7fa35a YELLOW
ContentVisualBase.java b061d42fc27e980023980d070961d0814702237d YELLOW
DiagramAnchorageVisualBase.java 05c235152bc79187f0fc9b041435da7968654a78 YELLOW
LinkVisualBase.java 909b933b38b7651cac901d767115e173983bef26 YELLOW
MVCBundlePartWithEffectsBase.java 6f6fbbb065950ad3acd4dc1fbfdd1348874e51d2 YELLOW
VisualBase.java a2daf2d8f8450559450ddf5bbc93d3f948c189dd YELLOW
ContentAnchorageVisualBase.java 6722629a940e9f8d973d2176bc3855932d7fa35a GREEN
ContentVisualBase.java d232c6cb7bc54b2430379379eb2985f5a2e12cd3 RED
DiagramAnchorageVisualBase.java 05c235152bc79187f0fc9b041435da7968654a78 GREEN
LinkVisualBase.java 909b933b38b7651cac901d767115e173983bef26 GREEN
MVCBundlePartWithEffectsBase.java 6f6fbbb065950ad3acd4dc1fbfdd1348874e51d2 GREEN
VisualBase.java 8d6e74d5c74703dad12847cd5c913fa72707a84a RED
......@@ -41,6 +41,7 @@ public abstract class ContentVisualBase extends VisualBase implements IContentVi
protected final Text text = new Text();
/** The icon of this visual. */
protected final ImageView icon = new ImageView();
// TODO (SB): Magic constant
/** The expanded / collapsed indicator widget. */
protected final ExpandCollapseWidget expandCollapseWidget =
new ExpandCollapseWidget(0, 0, 20, 20, 3);
......@@ -79,6 +80,7 @@ public abstract class ContentVisualBase extends VisualBase implements IContentVi
/** Returns the insets of the text label. */
protected Insets getTextInsets() {
// TODO (SB): Magic constant
return new Insets(10, 10, 10, 10);
}
......@@ -250,12 +252,14 @@ public abstract class ContentVisualBase extends VisualBase implements IContentVi
/** Returns the inset for the plus/minus sign of the expand/collapse widget. */
protected double getExpandCollapseWidgetInset() {
// TODO (SB): Magic constant
return 3;
}
/** Returns the location for the expand/collapse widget. */
protected Rectangle2D getExpandCollapseWidgetRectangle() {
Rectangle2D b = getCurrentBounds();
// TODO (SB): Magic constant
return new Rectangle2D(b.getWidth() - 20, 6, 14, 14);
}
......
......@@ -85,6 +85,7 @@ public abstract class VisualBase extends MVCBundlePartWithEffectsBase implements
protected void createHoverEffect(DiagramLayers layers) {
Color shadow = getHoverShadowColor();
if(shadow != null && visualShape != null) {
// TODO (SB): Magic constant
visualShape.setEffect(new DropShadow(10, 3, 3, shadow));
}
// handle hover text
......@@ -280,6 +281,7 @@ public abstract class VisualBase extends MVCBundlePartWithEffectsBase implements
/** Returns the opacity of the content visual. */
protected double getOpacity() {
// TODO (SB): Magic constant
return 0.8;
}
......@@ -290,6 +292,7 @@ public abstract class VisualBase extends MVCBundlePartWithEffectsBase implements
/** Returns the width of the border. */
protected double getBorderWidth() {
// TODO (SB): Magic constant
return 2;
}
......@@ -320,6 +323,7 @@ public abstract class VisualBase extends MVCBundlePartWithEffectsBase implements
/** Returns the size of the hit area as an outset of the visible rectangle. */
protected double getHitAreaOutset() {
// TODO (SB): Magic constant
return 10;
}
......