/** * Copyright (c) 2006, 2007 Borland Software Corporation * * 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: * Alexander Shatalin (Borland) - initial API and implementation */ package org.eclipse.gmf.tests.setup.figures; import org.eclipse.draw2d.RectangleFigure; import org.eclipse.gmf.gmfgraph.Alignment; import org.eclipse.gmf.gmfgraph.BorderLayout; import org.eclipse.gmf.gmfgraph.BorderLayoutData; import org.eclipse.gmf.gmfgraph.CustomFigure; import org.eclipse.gmf.gmfgraph.FigureDescriptor; import org.eclipse.gmf.gmfgraph.FigureGallery; import org.eclipse.gmf.gmfgraph.LabeledContainer; import org.eclipse.gmf.gmfgraph.RealFigure; import org.eclipse.gmf.gmfgraph.GMFGraphFactory; import org.eclipse.gmf.gmfgraph.Label; import org.eclipse.gmf.gmfgraph.Rectangle; import org.eclipse.gmf.gmfgraph.RoundedRectangle; import org.eclipse.gmf.tests.setup.DiaDefSetup; public class LabelSupportSetup extends AbstractFigureGeneratorSetup { private FigureDescriptor myCustom; private FigureDescriptor mySimple; private FigureDescriptor myLabeledContainer; private FigureDescriptor myRoot; protected void addFigures(FigureGallery gallery) { gallery.getDescriptors().add(getCustom()); gallery.getDescriptors().add(getSimple()); gallery.getDescriptors().add(getLabeledContainer()); gallery.getDescriptors().add(getRoot()); } public FigureDescriptor getRoot() { if (myRoot == null) { final Rectangle rootFigure = GMFGraphFactory.eINSTANCE.createRectangle(); myRoot = DiaDefSetup.newDescriptor("Root", rootFigure); BorderLayout layout = GMFGraphFactory.eINSTANCE.createBorderLayout(); myRoot.getActualFigure().setLayout(layout); RoundedRectangle padding = GMFGraphFactory.eINSTANCE.createRoundedRectangle(); padding.setName("Padding"); BorderLayoutData paddingData = GMFGraphFactory.eINSTANCE.createBorderLayoutData(); paddingData.setAlignment(Alignment.FILL_LITERAL); padding.setLayoutData(paddingData); Rectangle intermediateLabelContainer = GMFGraphFactory.eINSTANCE.createRectangle(); intermediateLabelContainer.setName("intermediateLabelContainer"); BorderLayoutData labelData = GMFGraphFactory.eINSTANCE.createBorderLayoutData(); labelData.setAlignment(Alignment.BEGINNING_LITERAL); labelData.setVertical(true); intermediateLabelContainer.setLayoutData(labelData); rootFigure.getChildren().add(intermediateLabelContainer); rootFigure.getChildren().add(padding); addLabel(myRoot, intermediateLabelContainer); } return myRoot; } public FigureDescriptor getLabeledContainer() { if (myLabeledContainer == null) { final LabeledContainer fig = GMFGraphFactory.eINSTANCE.createLabeledContainer(); myLabeledContainer = DiaDefSetup.newDescriptor("LabeledContainerAlreadyHasLabel_DoesItNeedOneMore", fig); addLabel(myLabeledContainer, fig); } return myLabeledContainer; } public FigureDescriptor getSimple() { if (mySimple == null) { Rectangle simpleFig = GMFGraphFactory.eINSTANCE.createRectangle(); mySimple = DiaDefSetup.newDescriptor("SimpleParent", simpleFig); addLabel(mySimple, simpleFig); } return mySimple; } public FigureDescriptor getCustom() { if (myCustom == null) { final CustomFigure fig = GMFGraphFactory.eINSTANCE.createCustomFigure(); fig.setQualifiedClassName(RectangleFigure.class.getName()); myCustom = DiaDefSetup.newDescriptor("CustomParent", fig); addLabel(myCustom, fig); } return myCustom; } private void addLabel(FigureDescriptor fd, RealFigure parent) { parent.setPreferredSize(FigureGeneratorUtil.createDimension(60, 60)); Label label = GMFGraphFactory.eINSTANCE.createLabel(); parent.getChildren().add(label); DiaDefSetup.newAccess(fd, label).setAccessor("Typename"); } }