package info.limpet.stackedcharts.ui.editor.parts; import java.util.Arrays; import java.util.List; import org.eclipse.draw2d.Border; import org.eclipse.draw2d.GridData; import org.eclipse.draw2d.GridLayout; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.LineBorder; import org.eclipse.draw2d.RectangleFigure; import org.eclipse.gef.EditPolicy; import org.eclipse.gef.GraphicalEditPart; import org.eclipse.gef.editparts.AbstractGraphicalEditPart; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Display; import info.limpet.stackedcharts.model.Orientation; import info.limpet.stackedcharts.ui.editor.Activator; import info.limpet.stackedcharts.ui.editor.figures.DirectionalLabel; import info.limpet.stackedcharts.ui.editor.parts.ChartEditPart.ChartPanePosition; import info.limpet.stackedcharts.ui.editor.parts.ChartPaneEditPart.AxisLandingPad; import info.limpet.stackedcharts.ui.editor.policies.AxisLandingPadEditPolicy; public class AxisLandingPadEditPart extends AbstractGraphicalEditPart { private DirectionalLabel nameLabel; @Override protected void createEditPolicies() { installEditPolicy(EditPolicy.CONTAINER_ROLE, new AxisLandingPadEditPolicy()); } @Override protected IFigure createFigure() { final RectangleFigure figure = new RectangleFigure(); figure.setOutline(false); final Color borderCol = Display.getCurrent().getSystemColor(SWT.COLOR_GRAY); final Border figureBorder = new LineBorder(borderCol, 2); figure.setBorder(figureBorder); figure.setLayoutManager(new GridLayout()); nameLabel = new DirectionalLabel(Activator.FONT_8); final ChartPaneEditPart.AxisLandingPad pad = (ChartPaneEditPart.AxisLandingPad) getModel(); nameLabel.setText(pad.pos == ChartPanePosition.MIN ? "Min Axis" : "Max Axis"); figure.add(nameLabel); figure.getLayoutManager().setConstraint(nameLabel, new GridData( GridData.FILL, GridData.FILL, true, true)); return figure; } @SuppressWarnings("rawtypes") @Override protected List getModelChildren() { return Arrays.asList(); } @Override protected void refreshVisuals() { boolean horizontal = ((AxisLandingPad) getModel()).chart.getParent() .getOrientation() == Orientation.HORIZONTAL; nameLabel.setVertical(!horizontal); if (horizontal) { ((GraphicalEditPart) getParent()).setLayoutConstraint(this, figure, new GridData(GridData.FILL, GridData.CENTER, true, false)); } else { ((GraphicalEditPart) getParent()).setLayoutConstraint(this, figure, new GridData(GridData.CENTER, GridData.FILL, false, true)); } figure.invalidate(); } }