diff options
Diffstat (limited to 'bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/EndPointEditPart.java')
-rw-r--r-- | bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/EndPointEditPart.java | 385 |
1 files changed, 0 insertions, 385 deletions
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/EndPointEditPart.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/EndPointEditPart.java deleted file mode 100644 index c6dc328d4..000000000 --- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/EndPointEditPart.java +++ /dev/null @@ -1,385 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.wsdl.ui.internal.asd.design.editparts; - -import java.util.Iterator; - -import org.eclipse.draw2d.ColorConstants; -import org.eclipse.draw2d.Figure; -import org.eclipse.draw2d.FigureCanvas; -import org.eclipse.draw2d.IFigure; -import org.eclipse.draw2d.Label; -import org.eclipse.draw2d.MarginBorder; -import org.eclipse.draw2d.Panel; -import org.eclipse.draw2d.PositionConstants; -import org.eclipse.draw2d.RectangleFigure; -import org.eclipse.draw2d.ToolbarLayout; -import org.eclipse.draw2d.geometry.Dimension; -import org.eclipse.draw2d.geometry.Point; -import org.eclipse.draw2d.geometry.Rectangle; -import org.eclipse.gef.EditPart; -import org.eclipse.gef.EditPartViewer; -import org.eclipse.gef.EditPolicy; -import org.eclipse.gef.GraphicalViewer; -import org.eclipse.gef.LayerConstants; -import org.eclipse.gef.Request; -import org.eclipse.gef.RequestConstants; -import org.eclipse.gef.commands.Command; -import org.eclipse.gef.editparts.AbstractGraphicalEditPart; -import org.eclipse.gef.tools.DirectEditManager; -import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin; -import org.eclipse.wst.wsdl.ui.internal.asd.ASDMultiPageEditor; -import org.eclipse.wst.wsdl.ui.internal.asd.design.DesignViewGraphicsConstants; -import org.eclipse.wst.wsdl.ui.internal.asd.design.connections.CenteredConnectionAnchor; -import org.eclipse.wst.wsdl.ui.internal.asd.design.directedit.LabelCellEditorLocator; -import org.eclipse.wst.wsdl.ui.internal.asd.design.directedit.LabelEditManager; -import org.eclipse.wst.wsdl.ui.internal.asd.design.editpolicies.ASDLabelDirectEditPolicy; -import org.eclipse.wst.wsdl.ui.internal.asd.design.editpolicies.ASDSelectionEditPolicy; -import org.eclipse.wst.wsdl.ui.internal.asd.design.figures.ComponentReferenceConnection; -import org.eclipse.wst.wsdl.ui.internal.asd.facade.IEndPoint; -import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement; - -public class EndPointEditPart extends BaseEditPart implements IFeedbackHandler, INamedEditPart -{ - protected Label nameLabel; - protected Label addressLabel; - private Label hoverHelpLabel = new Label(""); //$NON-NLS-1$ - protected Figure addressBoxFigure; - protected ComponentReferenceConnection connectionFigure; - protected final static int MAX_ADDRESS_WIDTH = 150; - - protected IFigure createFigure() - { - figure = new Panel(); - figure.setBorder(new MarginBorder(4)); - ToolbarLayout layout = new ToolbarLayout(false); - // layout.setMinorAlignment(ToolbarLayout.ALIGN_TOPLEFT); - layout.setStretchMinorAxis(true); - figure.setLayoutManager(layout); - nameLabel = new Label(); - - if (getModel() instanceof ITreeElement) { - nameLabel.setIcon(((ITreeElement) getModel()).getImage()); - } - - nameLabel.setLabelAlignment(Label.LEFT); - // nameLabel.setTextPlacement(PositionConstants.WEST); - figure.add(nameLabel); - Figure f1 = new Figure(); - f1.setBorder(new MarginBorder(0, 20, 0, 0)); - f1.setLayoutManager(new ToolbarLayout()); - figure.add(f1); - addressBoxFigure = new RectangleFigure(); - addressBoxFigure.setForegroundColor(ColorConstants.lightGray); - addressBoxFigure.setLayoutManager(new ToolbarLayout() - { - // here' we tweak the layout so that address labels aren't sized too wide - // the Label class automatically handles the addition of the '...' - // - protected Dimension calculatePreferredSize(IFigure container, int wHint, int hHint) - { - Dimension d = super.calculatePreferredSize(container, wHint, hHint); - d.width = Math.min(d.width, MAX_ADDRESS_WIDTH); - return d; - } - }); - f1.add(addressBoxFigure); - addressLabel = new Label(); - - addressLabel.setForegroundColor(ColorConstants.black); - addressLabel.setBorder(new MarginBorder(2, 6, 2, 6)); - addressLabel.setLabelAlignment(Label.LEFT); - addressBoxFigure.add(addressLabel); - - // rmah: The block of code below has been moved from refreshVisuals(). We're - // assuming the read-only state of the EditPart will never change once the - // EditPart has been created. - if (isReadOnly()) - { - nameLabel.setForegroundColor(DesignViewGraphicsConstants.readOnlyLabelColor); - addressLabel.setForegroundColor(DesignViewGraphicsConstants.readOnlyLabelColor); - } - else - { - nameLabel.setForegroundColor(DesignViewGraphicsConstants.labelColor); - addressLabel.setForegroundColor(DesignViewGraphicsConstants.labelColor); - } - - return figure; - } - - protected void createEditPolicies() - { - super.createEditPolicies(); - installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new ASDLabelDirectEditPolicy()); - installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ASDSelectionEditPolicy()); - } - private DirectEditManager manager; - private Point cursorLocation; - - public void performDirectEdit(Point cursorLocation) - { - this.cursorLocation = cursorLocation; - if (!isReadOnly() && !isFileReadOnly() && (cursorLocation == null || hitTest(getLabelFigure(), cursorLocation))) { - manager = new LabelEditManager(this, new LabelCellEditorLocator(this, cursorLocation)); - manager.show(); - } - else if (hitTest(getFigure().getBounds(), cursorLocation) && isReadOnly()) { - doOpenNewEditor(); - } - } - - public void performRequest(Request req) { - if (req.getType().equals(RequestConstants.REQ_DIRECT_EDIT)) { - performDirectEdit(null); - } - } - - public Label getLabelFigure() - { - if (cursorLocation == null || translateBounds(nameLabel.getBounds()).contains(cursorLocation)) - { - return nameLabel; - } - else if (translateBounds(addressLabel.getBounds()).contains(cursorLocation)) - { - return addressLabel; - } - return null; - } - - protected Rectangle translateBounds(Rectangle bounds) { - - ASDMultiPageEditor editor = (ASDMultiPageEditor) ASDEditorPlugin.getActiveEditor(); - FigureCanvas canvas = (FigureCanvas) ((EditPartViewer) editor.getAdapter(GraphicalViewer.class)).getControl(); - Point viewLocation = canvas.getViewport().getViewLocation(); - - return new Rectangle(bounds.x + viewLocation.x, bounds.y + viewLocation.y, bounds.width, bounds.height); - } - - protected Object getReferencedModel() - { - IEndPoint endPoint = (IEndPoint) getModel(); - return endPoint.getBinding(); - } - - protected void refreshVisuals() - { - IEndPoint endPoint = (IEndPoint) getModel(); - nameLabel.setText(endPoint.getName()); - addressLabel.setText(endPoint.getAddress()); - - Rectangle textBounds = addressLabel.getTextBounds(); - Rectangle bounds = addressLabel.getBounds(); - int textPlacement = addressLabel.getTextPlacement(); - int xDelta = textBounds.x - bounds.x; - int xTextIncrease = textPlacement - xDelta; - int textSize = textBounds.width + xTextIncrease; - int boundSize = bounds.width; - - if (textSize > boundSize) { - hoverHelpLabel.setText(" " + endPoint.getAddress() + " "); //$NON-NLS-1$ //$NON-NLS-2$ - addressLabel.setToolTip(hoverHelpLabel); - } - else { - addressLabel.setToolTip(null); - } - - refreshConnections(); - super.refreshVisuals(); - } - - public void activate() - { - super.activate(); - activateConnection(); - } - - public void deactivate() - { - super.deactivate(); - deactivateConnection(); - } - - protected void activateConnection() - { - if (createConnectionFigure() != null) - { - getLayer(LayerConstants.CONNECTION_LAYER).add(connectionFigure); - } - } - - protected void deactivateConnection() - { - if (connectionFigure != null) - { - boolean removed = false; - removed = removeConnectionFigure(getLayer(LayerConstants.CONNECTION_LAYER)); - - if (!removed) { - removeConnectionFigure(getLayer(LayerConstants.FEEDBACK_LAYER)); - } - } - } - - private boolean removeConnectionFigure(IFigure parent) { - boolean contains = false; - Iterator it = parent.getChildren().iterator(); - while (it.hasNext()) { - IFigure fig = (IFigure) it.next(); - if (fig.equals(connectionFigure)) { - contains = true; - break; - } - } - - if (contains) { - parent.remove(connectionFigure); - } - - return contains; - } - - protected boolean shouldDrawConnection() - { - Object typeBeingRef = getReferencedModel(); - if (typeBeingRef != null) - { - AbstractGraphicalEditPart referenceTypePart = (AbstractGraphicalEditPart) getViewer().getEditPartRegistry().get(typeBeingRef); - if (referenceTypePart != null) - { - return true; - } - } - - return false; - } - - - public ComponentReferenceConnection createConnectionFigure() - { - if (connectionFigure == null && shouldDrawConnection()) - { - Object typeBeingRef = getReferencedModel(); - if (typeBeingRef != null) - { - AbstractGraphicalEditPart referenceTypePart = (AbstractGraphicalEditPart) getViewer().getEditPartRegistry().get(typeBeingRef); - if (referenceTypePart != null) - { - // We do reference another Type. Build a connection. We can make - // assumptions about anchor positioning since an attribute can only - // have a "reference" relationship, no "inheritance", no - // "is-referenced-by" - connectionFigure = new ComponentReferenceConnection(); - refreshConnections(); - } - } - } - return connectionFigure; - } - - EditPart getConnectionTargetEditPart() - { - Object typeBeingRef = getReferencedModel(); - if (connectionFigure != null) { - AbstractGraphicalEditPart referenceTypePart = (AbstractGraphicalEditPart) getViewer().getEditPartRegistry().get(typeBeingRef); - return referenceTypePart; - } - return null; - } - - public void refreshConnections() { - if (shouldDrawConnection()) { - Object typeBeingRef = getReferencedModel(); - if (connectionFigure != null) { - AbstractGraphicalEditPart referenceTypePart = (AbstractGraphicalEditPart) getViewer().getEditPartRegistry().get(typeBeingRef); - connectionFigure.setSourceAnchor(new CenteredConnectionAnchor(addressBoxFigure, CenteredConnectionAnchor.RIGHT, 0, 0)); - IFigure targetFigure = referenceTypePart.getFigure(); - connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(targetFigure, CenteredConnectionAnchor.HEADER_LEFT, 0, 10)); - connectionFigure.setHighlight(false); - connectionFigure.setVisible(true); - } - else { - activateConnection(); - } - } - else if (connectionFigure != null){ - connectionFigure.setVisible(false); - } - } - - private IFigure getFigureForFeedback() - { - return figure; - } - - public void addFeedback() - { - IFigure figure = getFigureForFeedback(); - figure.setBackgroundColor(DesignViewGraphicsConstants.tableCellSelectionColor); - - if (connectionFigure != null) { - connectionFigure.setHighlight(true); - getLayer(LayerConstants.FEEDBACK_LAYER).add(connectionFigure); - } - } - - public void removeFeedback() - { - IFigure figure = getFigureForFeedback(); - figure.setBackgroundColor(figure.getParent().getBackgroundColor()); - - if (connectionFigure != null) { - connectionFigure.setHighlight(false); - getLayer(LayerConstants.CONNECTION_LAYER).add(connectionFigure); - } - } - - // TODO: rmah: VERY UGLY HACK.... I don't see any other way to solve this - // issue at this time. - // EndPointEditPart contains two labels which can be direct edited. The facade - // driving EndPointEditPart - // contains a getSetNameCommand() and a getSetAddressCommand()... however, - // this class (LabelDirectEditPolicy) - // only knows about getSetNameCommand()..... This is the problem we face when - // combining two labels into - // one EditPart..... - // See LabelDirectEditPolicy.getDirectEditCommand(DirectEditRequest) - public Command getSetProperLabelCommand(String newValue) - { - // TODO: rmah: We need to translate the point... - if (cursorLocation == null || translateBounds(nameLabel.getBounds()).contains(cursorLocation)) - { - return ((IEndPoint) getModel()).getSetNameCommand(newValue); - } - else if (translateBounds(addressLabel.getBounds()).contains(cursorLocation)) - { - return ((IEndPoint) getModel()).getSetAddressCommand(newValue); - } - return null; - } - - public EditPart getRelativeEditPart(int direction) - { - if (direction == PositionConstants.EAST) - { - // navigate forward along the connection (to the right) - return getConnectionTargetEditPart(); - } - - if (direction == PositionConstants.SOUTH) - { - return EditPartNavigationHandlerUtil.getNextService(this); - } - - return super.getRelativeEditPart(direction); - } -} |