Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/commands/DesignResizeComponentCommand.java')
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/commands/DesignResizeComponentCommand.java136
1 files changed, 136 insertions, 0 deletions
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/commands/DesignResizeComponentCommand.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/commands/DesignResizeComponentCommand.java
new file mode 100644
index 000000000..08cc1af56
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/commands/DesignResizeComponentCommand.java
@@ -0,0 +1,136 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Sybase, Inc. 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:
+ * Sybase, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.pagedesigner.commands;
+
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.DefaultEditDomain;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartViewer;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.editparts.ScalableRootEditPart;
+import org.eclipse.jface.text.ITextOperationTarget;
+import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.jst.pagedesigner.css2.property.ICSSPropertyID;
+import org.eclipse.jst.pagedesigner.editors.HTMLEditor;
+import org.eclipse.jst.pagedesigner.viewer.HTMLGraphicalViewer;
+import org.w3c.dom.Element;
+
+/**
+ * @author mengbo
+ */
+public class DesignResizeComponentCommand extends Command {
+ private EditPart _part;
+
+ private Object _constraint;
+
+ private SourceViewer _viewer;
+
+ public DesignResizeComponentCommand(EditPart child, Object constraint) {
+ this._part = child;
+ this._constraint = constraint;
+ EditPart part = child;
+ if (part instanceof ScalableRootEditPart) {
+ } else {
+ while (part != null
+ && !(part.getParent() instanceof ScalableRootEditPart)) {
+ part = part.getParent();
+ }
+ }
+ if (part != null) {
+ EditPartViewer viewer = ((ScalableRootEditPart) part.getParent())
+ .getViewer();
+ HTMLEditor editor = ((HTMLEditor) ((DefaultEditDomain) ((HTMLGraphicalViewer) viewer)
+ .getEditDomain()).getEditorPart());
+ _viewer = editor.getTextEditor().getTextViewer();
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.gef.commands.Command#execute()
+ */
+ public void execute() {
+ Element element = ((Element) _part.getModel());
+ String width = element.getAttribute(ICSSPropertyID.ATTR_WIDTH);
+ // String height = element.getAttribute(ICSSPropertyID.ATTR_HEIGHT);
+ String originalStyle = element.getAttribute(ICSSPropertyID.ATTR_STYLE);
+ StringBuffer style;
+ if (originalStyle != null) {
+ originalStyle = this.removeOthers(originalStyle,
+ ICSSPropertyID.ATTR_WIDTH);
+ originalStyle = this.removeOthers(originalStyle,
+ ICSSPropertyID.ATTR_HEIGHT);
+ style = new StringBuffer(originalStyle);
+ } else {
+ style = new StringBuffer(50);
+ }
+ if (null == width) {
+ style.append(";").append(ICSSPropertyID.ATTR_WIDTH).append(":")
+ .append(((Rectangle) _constraint).width).append(";");
+ style.append(ICSSPropertyID.ATTR_HEIGHT).append(":").append(
+ ((Rectangle) _constraint).height).append("");
+ }
+ element.setAttribute(ICSSPropertyID.ATTR_STYLE, style.toString());
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.gef.commands.Command#redo()
+ */
+ public void redo() {
+ _viewer.doOperation(ITextOperationTarget.REDO);
+ }
+
+ public String removeOthers(String style, String item) {
+ String result = null;
+ int pos = style.indexOf(item);
+ if (pos < 0) {
+ return style;
+ }
+ int pos1 = pos;
+ if (pos > 0) {
+ if (style.charAt(pos - 1) == ';') {
+ pos--;
+ }
+ }
+ char ch = style.charAt(pos1);
+ while (!(ch == ';' || ch == '"' || ch == '\'')) {
+ pos1++;
+ if (pos1 >= style.length()) {
+ break;
+ }
+ ch = style.charAt(pos1);
+ }
+ if (pos1 < style.length()) {
+ result = style.substring(0, pos)
+ + style.substring(pos1 + 1, style.length());
+ } else {
+ result = style.substring(0, pos);
+ }
+ if (result.indexOf(item) >= 0) {
+ return removeOthers(result, item);
+ } else {
+ return result;
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.gef.commands.Command#undo()
+ */
+ public void undo() {
+ _viewer.doOperation(ITextOperationTarget.UNDO);
+ }
+}

Back to the top