Skip to content
Snippets Groups Projects
Commit 58949425 authored by Florian Hölzl's avatar Florian Hölzl
Browse files

intermediary backup checkin

parent d4f9c6e6
No related branches found
No related tags found
No related merge requests found
......@@ -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,
......
org.fortiss.tooling.base.ui/trunk/icons/overlay/ellipse-reflections.png

6.83 KiB

org.fortiss.tooling.base.ui/trunk/icons/overlay/linear-blend-round.png

4.93 KiB

org.fortiss.tooling.base.ui/trunk/icons/overlay/radial-blend.png

2.93 KiB

/*--------------------------------------------------------------------------+
$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;
}
}
/*--------------------------------------------------------------------------+
$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;
}
}
/*--------------------------------------------------------------------------+
$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();
}
}
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