From 589494255be0318ccd7d8ed299c7fc74d07c90e2 Mon Sep 17 00:00:00 2001 From: Florian Hoelzl <hoelzl@fortiss.org> Date: Mon, 20 Jun 2011 16:16:39 +0000 Subject: [PATCH] intermediary backup checkin --- .../trunk/META-INF/MANIFEST.MF | 3 + .../icons/overlay/ellipse-reflections.png | Bin 0 -> 6999 bytes .../icons/overlay/linear-blend-round.png | Bin 0 -> 5047 bytes .../trunk/icons/overlay/radial-blend.png | Bin 0 -> 3004 bytes .../base/ui/editpart/SnapToGridSupport.java | 43 +++++ .../RectangularConnectorEditPartBase.java | 162 ++++++++++++++++++ .../figure/PrettyRoundedRectangle.java | 134 +++++++++++++++ 7 files changed, 342 insertions(+) create mode 100644 org.fortiss.tooling.base.ui/trunk/icons/overlay/ellipse-reflections.png create mode 100644 org.fortiss.tooling.base.ui/trunk/icons/overlay/linear-blend-round.png create mode 100644 org.fortiss.tooling.base.ui/trunk/icons/overlay/radial-blend.png create mode 100644 org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/kernel/base/ui/editpart/SnapToGridSupport.java create mode 100644 org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/kernel/base/ui/editpart/connector/RectangularConnectorEditPartBase.java create mode 100644 org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/kernel/base/ui/editpart/figure/PrettyRoundedRectangle.java diff --git a/org.fortiss.tooling.base.ui/trunk/META-INF/MANIFEST.MF b/org.fortiss.tooling.base.ui/trunk/META-INF/MANIFEST.MF index 339fec841..94f2d8e1b 100644 --- a/org.fortiss.tooling.base.ui/trunk/META-INF/MANIFEST.MF +++ b/org.fortiss.tooling.base.ui/trunk/META-INF/MANIFEST.MF @@ -10,11 +10,14 @@ Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-Vendor: fortiss Export-Package: org.fortiss.tooling.kernel.base.ui, + org.fortiss.tooling.kernel.base.ui.action, org.fortiss.tooling.kernel.base.ui.command, org.fortiss.tooling.kernel.base.ui.dnd, org.fortiss.tooling.kernel.base.ui.editor, + org.fortiss.tooling.kernel.base.ui.editor.gef, org.fortiss.tooling.kernel.base.ui.editpart, org.fortiss.tooling.kernel.base.ui.editpart.anchor, + org.fortiss.tooling.kernel.base.ui.editpart.figure, org.fortiss.tooling.kernel.base.ui.editpart.policy, org.fortiss.tooling.kernel.base.ui.layout, org.fortiss.tooling.kernel.base.ui.layout.constants, diff --git a/org.fortiss.tooling.base.ui/trunk/icons/overlay/ellipse-reflections.png b/org.fortiss.tooling.base.ui/trunk/icons/overlay/ellipse-reflections.png new file mode 100644 index 0000000000000000000000000000000000000000..1aceeffcc70ea56b0112100f1db06e579b64fb58 GIT binary patch literal 6999 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 literal 0 HcmV?d00001 diff --git a/org.fortiss.tooling.base.ui/trunk/icons/overlay/linear-blend-round.png b/org.fortiss.tooling.base.ui/trunk/icons/overlay/linear-blend-round.png new file mode 100644 index 0000000000000000000000000000000000000000..655dba892742ff937ac9e2c52371445ce57ca900 GIT binary patch literal 5047 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 N002ovPDHLkV1nmtk{|#8 literal 0 HcmV?d00001 diff --git a/org.fortiss.tooling.base.ui/trunk/icons/overlay/radial-blend.png b/org.fortiss.tooling.base.ui/trunk/icons/overlay/radial-blend.png new file mode 100644 index 0000000000000000000000000000000000000000..660c0cef02162e057ce2c4a262f261472a6a1a87 GIT binary patch literal 3004 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 literal 0 HcmV?d00001 diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/kernel/base/ui/editpart/SnapToGridSupport.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/kernel/base/ui/editpart/SnapToGridSupport.java new file mode 100644 index 000000000..8cf8f5dcc --- /dev/null +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/kernel/base/ui/editpart/SnapToGridSupport.java @@ -0,0 +1,43 @@ +/*--------------------------------------------------------------------------+ +$Id$ +| | +| Copyright 2011 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.base.ui.editpart; + +import org.eclipse.gef.GraphicalEditPart; +import org.eclipse.gef.SnapToGrid; + +/** + * Adapter support for snap to grid edit policies. + * + * @author hoelzlf + * @author $Author$ + * @version $Rev$ + * @ConQAT.Rating RED Hash: + */ +public final class SnapToGridSupport { + /** + * Adapter code for snap to grid feature. + */ + public static Object snapToGridAdapter(GraphicalEditPart editPart) { + final Boolean val = (Boolean) editPart.getViewer().getProperty( + SnapToGrid.PROPERTY_GRID_ENABLED); + if (val != null && val.booleanValue()) { + return new SnapToGrid(editPart); + } + return null; + } +} diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/kernel/base/ui/editpart/connector/RectangularConnectorEditPartBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/kernel/base/ui/editpart/connector/RectangularConnectorEditPartBase.java new file mode 100644 index 000000000..0612689aa --- /dev/null +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/kernel/base/ui/editpart/connector/RectangularConnectorEditPartBase.java @@ -0,0 +1,162 @@ +/*--------------------------------------------------------------------------+ +$Id$ +| | +| Copyright 2011 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.base.ui.editpart.connector; + +import java.util.ArrayList; +import java.util.List; + +import org.conqat.lib.commons.collections.CollectionUtils; +import org.eclipse.draw2d.ChopboxAnchor; +import org.eclipse.draw2d.ConnectionAnchor; +import org.eclipse.draw2d.Figure; +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.Label; +import org.eclipse.gef.ConnectionEditPart; +import org.eclipse.gef.EditPolicy; +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.layout.ILayoutedModelElement; +import org.fortiss.tooling.kernel.base.ui.editpart.ConnectorEditPartBase; +import org.fortiss.tooling.kernel.base.ui.editpart.policy.ConnectionGraphicalNodeEditPolicy; +import org.fortiss.tooling.kernel.base.ui.editpart.policy.RemoveEditPolicy; +import org.fortiss.tooling.kernel.base.ui.layout.constants.RecommendedLayoutConstants; + +/** + * The super class of the connector edit parts used with rectangular shapes. + * + * @author hoelzlf + * @author $Author$ + * @version $Rev$ + * @ConQAT.Rating RED Hash: + */ +public abstract class RectangularConnectorEditPartBase<T extends IConnector & ILayoutedModelElement> + extends ConnectorEditPartBase<T> { + + /** The label used for the port. */ + protected final Label label = new Label(); + + /** The figure used for the port itself. */ + private IFigure connectorFigure; + + /** Creates the edit part. */ + public RectangularConnectorEditPartBase(T connector) { + super(connector); + } + + /** {@inheritDoc} */ + @Override + protected IFigure createFigure() { + connectorFigure = getConnectorFigure(); + + Figure composite = new Figure(); + composite + .setSize(RecommendedLayoutConstants.RECTANGULAR_CONNECTOR_DIMENSION); + + // TODO (BH): Clean this up.... + // composite.setLayoutManager(new PortLabelLayoutManager()); + // composite.add(connectorFigure, PortLabelLayoutManager.PORT); + // composite.add(label, PortLabelLayoutManager.LABEL); + + return composite; + } + + /** Returns the figure used for the connector. */ + protected IFigure getConnectorFigure() { + if (connectorFigure == null) { + connectorFigure = createConnectorFigure(); + } + return connectorFigure; + } + + /** Creates the figure used for the connector. */ + protected abstract IFigure createConnectorFigure(); + + /** {@inheritDoc} */ + @Override + protected ConnectionAnchor defaultConnectionAnchor() { + return new ChopboxAnchor(getConnectorFigure()); + } + + /** {@inheritDoc} */ + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + protected void refreshVisuals() { + super.refreshVisuals(); + + refreshSourceConnections(); + refreshTargetConnections(); + + for (ConnectionEditPart editPart : (List<ConnectionEditPart>) getSourceConnections()) { + editPart.refresh(); + } + for (ConnectionEditPart editPart : (List<ConnectionEditPart>) getTargetConnections()) { + editPart.refresh(); + } + } + + /** {@inheritDoc} */ + @Override + protected void createEditPolicies() { + installEditPolicy(EditPolicy.COMPONENT_ROLE, new RemoveEditPolicy()); + + installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, + new ConnectionGraphicalNodeEditPolicy()); + } + + /** Returns the root element for this connector edit part. */ + protected abstract IHierarchicElement getRootHierarchicElement(); + + /** + * Returns whether the underlying connector edit part acts as a destination + * connector in the current view (i.e. edit part). + */ + protected abstract boolean isReceiving(); + + /** {@inheritDoc} */ + @Override + protected List<IConnection> getModelSourceConnections() { + if (!isReceiving()) { + return filterConnections(modelElement.getOutgoingList(), + getRootHierarchicElement()); + } + return CollectionUtils.emptyList(); + } + + /** {@inheritDoc} */ + @Override + protected List<IConnection> getModelTargetConnections() { + if (isReceiving()) { + return filterConnections(modelElement.getIncomingList(), + getRootHierarchicElement()); + } + return CollectionUtils.emptyList(); + } + + /** Filters any channels not owned by the given owner. */ + private List<IConnection> filterConnections(List<IConnection> connections, + IHierarchicElement owner) { + List<IConnection> result = new ArrayList<IConnection>(); + for (IConnection channel : connections) { + if (channel.eContainer() == owner) { + result.add(channel); + } + } + return result; + } +} diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/kernel/base/ui/editpart/figure/PrettyRoundedRectangle.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/kernel/base/ui/editpart/figure/PrettyRoundedRectangle.java new file mode 100644 index 000000000..b2e3c2b94 --- /dev/null +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/kernel/base/ui/editpart/figure/PrettyRoundedRectangle.java @@ -0,0 +1,134 @@ +/*--------------------------------------------------------------------------+ +$Id$ +| | +| Copyright 2011 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.base.ui.editpart.figure; + +import org.eclipse.draw2d.ColorConstants; +import org.eclipse.draw2d.Graphics; +import org.eclipse.draw2d.Shape; +import org.eclipse.draw2d.geometry.Insets; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Image; +import org.fortiss.tooling.kernel.base.ui.ToolingBaseUIActivator; + +/** + * This shape consists of a rounded rectangle that is surrounded by transparent + * insets. The rounded rectangle is filled with {@link #getBackgroundColor()}. A + * light top-down gradient from white to the background color is painted over + * the background color to achieve a 3 dimensional reflection effect. + * <p> + * Anti-aliasing is enabled for smooth corners of the rounded rectangle. + * + * @author hoelzl + * @author $Author$ + * @version $Rev$ + * @ConQAT.Rating RED Hash: + */ +// TODO (FH): add glossy effect: see commented code below +public class PrettyRoundedRectangle extends Shape { + + /** The radius to use for the rounded corners of this shape. */ + protected final int cornerRadius; + + /** The transparent insets surrounding this shape. */ + protected final Insets insets; + + /** A linear blend applied at the top. */ + protected static final Image linearBlend = ToolingBaseUIActivator + .getImageDescriptor("icons/overlay/linear-blend-round.png") + .createImage(); + + /** A radial blend applied at the bottom. */ + protected static final Image radialBlend = ToolingBaseUIActivator + .getImageDescriptor("icons/overlay/radial-blend.png").createImage(); + + /** Creates a new {@link PrettyRoundedRectangle} with given {@link Insets}. */ + public PrettyRoundedRectangle(int cornerRadius, Insets insets) { + this.cornerRadius = cornerRadius; + this.insets = insets; + } + + /** {@inheritDoc} */ + @Override + protected void fillShape(Graphics gfx) { + // final EVisualStyle style = EVisualStyle.get(); + gfx.pushState(); + // if (style == EVisualStyle.Glossy) { + // // Glossy style. + // final Rectangle b = getCroppedBounds(); + // gfx.setBackgroundColor(ColorConstants.black); + // gfx.setAlpha(48); + // gfx.fillRoundRectangle(b.getCopy().translate(5, 5), cornerRadius, + // cornerRadius); + // gfx.restoreState(); + // gfx.fillRoundRectangle(b, cornerRadius, cornerRadius); + // gfx.setAlpha(255); + // gfx.drawImage(linearBlend, new Rectangle(linearBlend.getBounds()), + // b.getCopy().resize(-1, -b.height / 2 - 1)); + // gfx.setAlpha(200); + // gfx.drawImage( + // radialBlend, + // new Rectangle(radialBlend.getBounds()), + // b.getCopy().resize(-1, -b.height / 2 - 1) + // .translate(0, b.height / 2)); + // } else { + // Traditional style is default. + gfx.fillRoundRectangle(getCroppedBounds(), cornerRadius, cornerRadius); + gfx.setForegroundColor(ColorConstants.white); + gfx.setAlpha(200); + gfx.fillGradient(getCroppedBounds().resize(0, -cornerRadius), true); + // } + gfx.popState(); + } + + /** Returns a copy of the bounds cropped by the insets. */ + protected Rectangle getCroppedBounds() { + return bounds.getCropped(insets); + } + + /** + * {@inheritDoc} + * <p> + * Additionally enables anti-aliasing. + */ + @Override + protected void outlineShape(Graphics gfx) { + // final EVisualStyle style = EVisualStyle.get(); + gfx.pushState(); + gfx.setAntialias(SWT.ON); + // if (style == EVisualStyle.Glossy) { + // // Glossy style. + // gfx.setLineCap(SWT.CAP_ROUND); + // final int scale = (int) gfx.getAbsoluteScale(); + // gfx.setLineWidth(scale + 1); + // final Color bg = gfx.getBackgroundColor(); + // final Color bgdark = new Color(bg.getDevice(), max(0, + // (bg.getRed() - 80)), max(0, (bg.getGreen() - 80)), max(0, + // (bg.getBlue() - 80))); + // gfx.setForegroundColor(bgdark); + // gfx.drawRoundRectangle(getCroppedBounds().resize(-1, -1), + // cornerRadius, cornerRadius); + // bgdark.dispose(); + // } else { + // Traditional style is default. + gfx.drawRoundRectangle(getCroppedBounds().resize(-1, -1), cornerRadius, + cornerRadius); + // } + gfx.popState(); + } +} -- GitLab