瀏覽代碼

Allow resizing smaller than the preferred size #1150 (#1244)

Andreas Mülder 8 年之前
父節點
當前提交
9a6bda7cc5

+ 8 - 2
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/StatechartTextEditPart.java

@@ -24,7 +24,8 @@ import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyRequest;
 import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
 import org.eclipse.gmf.runtime.notation.View;
 import org.yakindu.sct.ui.editor.editor.figures.StatechartTextFigure;
-import org.yakindu.sct.ui.editor.policies.PreferredSizeCompartmentEditPolicy;
+import org.yakindu.sct.ui.editor.policies.PreferredSizeHandlerEditPolicy;
+import org.yakindu.sct.ui.editor.providers.SemanticHints;
 
 /**
  * 
@@ -67,7 +68,12 @@ public class StatechartTextEditPart extends ShapeNodeEditPart implements
 				new RootComponentEditPolicy());
 		removeEditPolicy(EditPolicyRoles.CONNECTION_HANDLES_ROLE);
 		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,
-				new PreferredSizeCompartmentEditPolicy());
+				new PreferredSizeHandlerEditPolicy(){
+			@Override
+			protected IFigure getPreferredSizeFigure() {
+				return getChildBySemanticHint(SemanticHints.STATECHART_NAME).getFigure();
+			}
+		});
 	}
 
 	@Override

+ 6 - 2
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/policies/PreferredSizeCompartmentEditPolicy.java

@@ -45,10 +45,10 @@ public class PreferredSizeCompartmentEditPolicy extends ResizableEditPolicyEx {
 	}
 
 	protected void adjustRequest(ChangeBoundsRequest request) {
-		final IFigure figure = getHostFigure();
+		final IFigure figure = getPreferredSizeFigure();
 		final Dimension prefSize = figure.getPreferredSize().getCopy();
 		figure.translateToAbsolute(prefSize);
-		Rectangle bounds = figure.getBounds().getCopy();
+		Rectangle bounds = getHostFigure().getBounds().getCopy();
 		figure.translateToAbsolute(bounds);
 		bounds = request.getTransformedRectangle(bounds);
 		if (bounds.width < prefSize.width) {
@@ -60,4 +60,8 @@ public class PreferredSizeCompartmentEditPolicy extends ResizableEditPolicyEx {
 		request.setSizeDelta(request.getSizeDelta());
 	}
 
+	protected IFigure getPreferredSizeFigure() {
+		return getHostFigure();
+	}
+
 }