Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
* @coverage gef.draw2d
*/
public class FigureCanvas extends org.eclipse.draw2d.FigureCanvas {
private RootFigure m_rootFigure;

////////////////////////////////////////////////////////////////////////////
//
Expand All @@ -38,8 +37,8 @@ public class FigureCanvas extends org.eclipse.draw2d.FigureCanvas {
////////////////////////////////////////////////////////////////////////////
public FigureCanvas(Composite parent, int style) {
super(parent, style | SWT.DOUBLE_BUFFERED, createLightweightSystem());
// create root figure
createRootFigure();
setDefaultEventManager();
setDefaultUpdateManager();
}

////////////////////////////////////////////////////////////////////////////
Expand All @@ -48,16 +47,6 @@ public FigureCanvas(Composite parent, int style) {
//
////////////////////////////////////////////////////////////////////////////

private void createRootFigure() {
m_rootFigure = new RootFigure(this);
m_rootFigure.setBackgroundColor(getBackground());
m_rootFigure.setForegroundColor(getForeground());
m_rootFigure.setFont(getFont());
setDefaultEventManager();
setDefaultUpdateManager();
setContents(m_rootFigure);
}

// TODO ptziegler - It should be possible to change the update manager after the
// figure canvas has been created.
private static LightweightSystem createLightweightSystem() {
Expand Down Expand Up @@ -97,7 +86,7 @@ private CachedUpdateManager getUpdateManager() {
////////////////////////////////////////////////////////////////////////////
@Override
public Point computeSize(int wHint, int hHint, boolean changed) {
Dimension size = m_rootFigure.getPreferredSize().getUnioned(wHint, hHint);
Dimension size = getContents().getPreferredSize().getUnioned(wHint, hHint);
return new Point(size.width, size.height);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,8 @@

import org.eclipse.wb.draw2d.Layer;

import org.eclipse.draw2d.EventDispatcher;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.UpdateManager;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Rectangle;

Expand All @@ -31,7 +29,6 @@
* @coverage gef.draw2d
*/
public class RootFigure extends Figure implements IRootFigure {
private final FigureCanvas m_figureCanvas;
private Dimension m_preferredSize;
private Map<String, Layer> m_nameToLayer = new HashMap<>();
private IPreferredSizeProvider m_preferredSizeProvider;
Expand All @@ -41,8 +38,7 @@ public class RootFigure extends Figure implements IRootFigure {
// Constructor
//
////////////////////////////////////////////////////////////////////////////
public RootFigure(FigureCanvas figureCanvas) {
m_figureCanvas = figureCanvas;
public RootFigure() {
setOpaque(true);
}

Expand All @@ -59,22 +55,12 @@ public void setPreferredSizeProvider(IPreferredSizeProvider provider) {
m_preferredSizeProvider = provider;
}

@Override
public EventDispatcher internalGetEventDispatcher() {
return m_figureCanvas.getLightweightSystem().getRootFigure().internalGetEventDispatcher();
}

////////////////////////////////////////////////////////////////////////////
//
// RootFigure
//
////////////////////////////////////////////////////////////////////////////

@Override
public UpdateManager getUpdateManager() {
return m_figureCanvas.getLightweightSystem().getUpdateManager();
}

/**
* Returns the desirable size for this container figure.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,12 @@ protected void setDefaultEventManager() {

protected GraphicalViewer(FigureCanvas canvas) {
m_canvas = canvas;
m_rootEditPart = new RootEditPart(getRootFigure());
m_rootEditPart = new RootEditPart();
m_rootEditPart.setViewer(this);
m_rootEditPart.activate();
setRootEditPart(m_rootEditPart);
setKeyHandler(new DesignKeyHandler(this));
m_canvas.setContents(m_rootEditPart.getFigure());
}

////////////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -104,7 +105,7 @@ public final IRootFigure getRootFigure() {
* Internal access to original, internal root figure.
*/
protected final RootFigure getRootFigureInternal() {
return (RootFigure) m_canvas.getContents();
return m_rootEditPart.getFigure();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import org.eclipse.wb.draw2d.Layer;
import org.eclipse.wb.gef.core.IEditPartViewer;
import org.eclipse.wb.gef.graphical.DesignEditPart;
import org.eclipse.wb.internal.draw2d.IRootFigure;
import org.eclipse.wb.internal.draw2d.RootFigure;

import org.eclipse.draw2d.IFigure;
import org.eclipse.gef.DragTracker;
Expand All @@ -37,16 +37,14 @@
*/
public class RootEditPart extends DesignEditPart implements org.eclipse.gef.RootEditPart, LayerManager {
private IEditPartViewer m_viewer;
private final IRootFigure m_rootFigure;
private EditPart m_contentEditPart;

////////////////////////////////////////////////////////////////////////////
//
// Constructor
//
////////////////////////////////////////////////////////////////////////////
public RootEditPart(IRootFigure rootFigure) {
m_rootFigure = rootFigure;
public RootEditPart() {
createLayers();
}

Expand All @@ -56,22 +54,22 @@ public RootEditPart(IRootFigure rootFigure) {
//
////////////////////////////////////////////////////////////////////////////
private void createLayers() {
m_rootFigure.addLayer(new Layer(IEditPartViewer.PRIMARY_LAYER_SUB_1));
m_rootFigure.addLayer(new Layer(LayerConstants.PRIMARY_LAYER));
m_rootFigure.addLayer(new Layer(IEditPartViewer.HANDLE_LAYER_SUB_1));
m_rootFigure.addLayer(new Layer(IEditPartViewer.HANDLE_LAYER_SUB_2));
m_rootFigure.addLayer(new Layer(LayerConstants.HANDLE_LAYER));
m_rootFigure.addLayer(new Layer(IEditPartViewer.HANDLE_LAYER_STATIC));
m_rootFigure.addLayer(new Layer(IEditPartViewer.FEEDBACK_LAYER_SUB_1));
m_rootFigure.addLayer(new Layer(IEditPartViewer.FEEDBACK_LAYER_SUB_2));
m_rootFigure.addLayer(new Layer(LayerConstants.FEEDBACK_LAYER));
m_rootFigure.addLayer(new Layer(IEditPartViewer.FEEDBACK_LAYER_ABV_1));
m_rootFigure.addLayer(new Layer(IEditPartViewer.CLICKABLE_LAYER));
m_rootFigure.addLayer(new Layer(IEditPartViewer.MENU_PRIMARY_LAYER));
m_rootFigure.addLayer(new Layer(IEditPartViewer.MENU_HANDLE_LAYER));
m_rootFigure.addLayer(new Layer(IEditPartViewer.MENU_HANDLE_LAYER_STATIC));
m_rootFigure.addLayer(new Layer(IEditPartViewer.MENU_FEEDBACK_LAYER));
m_rootFigure.addLayer(new Layer(IEditPartViewer.TOP_LAYER));
getFigure().addLayer(new Layer(IEditPartViewer.PRIMARY_LAYER_SUB_1));
getFigure().addLayer(new Layer(LayerConstants.PRIMARY_LAYER));
getFigure().addLayer(new Layer(IEditPartViewer.HANDLE_LAYER_SUB_1));
getFigure().addLayer(new Layer(IEditPartViewer.HANDLE_LAYER_SUB_2));
getFigure().addLayer(new Layer(LayerConstants.HANDLE_LAYER));
getFigure().addLayer(new Layer(IEditPartViewer.HANDLE_LAYER_STATIC));
getFigure().addLayer(new Layer(IEditPartViewer.FEEDBACK_LAYER_SUB_1));
getFigure().addLayer(new Layer(IEditPartViewer.FEEDBACK_LAYER_SUB_2));
getFigure().addLayer(new Layer(LayerConstants.FEEDBACK_LAYER));
getFigure().addLayer(new Layer(IEditPartViewer.FEEDBACK_LAYER_ABV_1));
getFigure().addLayer(new Layer(IEditPartViewer.CLICKABLE_LAYER));
getFigure().addLayer(new Layer(IEditPartViewer.MENU_PRIMARY_LAYER));
getFigure().addLayer(new Layer(IEditPartViewer.MENU_HANDLE_LAYER));
getFigure().addLayer(new Layer(IEditPartViewer.MENU_HANDLE_LAYER_STATIC));
getFigure().addLayer(new Layer(IEditPartViewer.MENU_FEEDBACK_LAYER));
getFigure().addLayer(new Layer(IEditPartViewer.TOP_LAYER));
}

////////////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -106,15 +104,17 @@ public void setViewer(EditPartViewer viewer) {
*/
@Override
public IFigure getContentPane() {
return m_rootFigure.getLayer(LayerConstants.PRIMARY_LAYER);
return getFigure().getLayer(LayerConstants.PRIMARY_LAYER);
}

/**
* This {@link EditPart} not contains itself {@link IFigure}.
*/
@Override
protected IFigure createFigure() {
return null;
return new RootFigure();
}

@Override
public RootFigure getFigure() {
return (RootFigure) super.getFigure();
}

@Override
Expand Down Expand Up @@ -146,7 +146,7 @@ public void setContents(org.eclipse.gef.EditPart contentEditPart) {
// remove content
removeChild(m_contentEditPart);
// clear all layers
for (Layer layer : m_rootFigure.getLayers()) {
for (Layer layer : getFigure().getLayers()) {
layer.removeAll();
}
}
Expand All @@ -171,7 +171,7 @@ public DragTracker getDragTracker(Request request) {
@Override
public IFigure getLayer(Object key) {
if (key instanceof String name) {
return m_rootFigure.getLayer(name);
return getFigure().getLayer(name);
}
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import org.eclipse.wb.internal.core.utils.ui.DrawUtils;
import org.eclipse.wb.internal.draw2d.EventManager;
import org.eclipse.wb.internal.draw2d.FigureCanvas;
import org.eclipse.wb.internal.draw2d.RootFigure;

import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.Figure;
Expand Down Expand Up @@ -158,6 +159,7 @@ public PaletteComposite(Composite parent, int style) {
// prepare draw2d FigureCanvas
{
m_figureCanvas = new FigureCanvas(this, SWT.V_SCROLL);
m_figureCanvas.setContents(new RootFigure());
m_figureCanvas.getContents().setBackgroundColor(COLOR_PALETTE_BACKGROUND);
m_figureCanvas.getContents().setForegroundColor(COLOR_TEXT_ENABLED);
m_eventManager = (EventManager) m_figureCanvas.getContents().internalGetEventDispatcher();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ public void setUp() throws Exception {
m_shell = new Shell();
m_shell.setLayout(new FillLayout());
m_canvas = new FigureCanvas(m_shell, SWT.NONE);
m_canvas.setContents(new RootFigure());
m_sender = new EventSender(m_canvas);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public void test_getPreferredSize_setBounds() throws Exception {
//
TestLogger expectedLogger = new TestLogger();
//
RootFigure testRoot = new RootFigure(null) {
RootFigure testRoot = new RootFigure() {
@Override
public UpdateManager getUpdateManager() {
return updateManager;
Expand Down Expand Up @@ -157,7 +157,7 @@ public String toString() {
figure22.add(figure23, new Rectangle(15, 25, 19, 12));
//
final UpdateManager updateManager = new DeferredUpdateManager();
RootFigure testRoot = new RootFigure(null) {
RootFigure testRoot = new RootFigure() {
@Override
public UpdateManager getUpdateManager() {
return updateManager;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2011, 2023 Google, Inc.
* Copyright (c) 2011, 2026 Google, Inc. and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
Expand Down Expand Up @@ -37,7 +37,6 @@ public class TestCaseRootFigure extends RootFigure {
//
////////////////////////////////////////////////////////////////////////////
public TestCaseRootFigure(TestLogger logger) {
super(null);
m_logger = logger;
m_testManager = new UpdateManager() {
@Override
Expand Down
Loading