From 14d429f07e728dae3ce5a9ceae7d2d24948915ca Mon Sep 17 00:00:00 2001
From: Stefanie Gareis <gareis@fortiss.org>
Date: Wed, 12 Dec 2012 10:33:53 +0000
Subject: [PATCH] resolving this feature:UI property section for setting ports
 bounds refs 1067

---
 .../tooling/base/ui/utils/WidgetsFactory.java | 33 ++++++++++++++++++-
 .../extension/base/PropertySectionBase.java   | 20 ++++++++---
 2 files changed, 48 insertions(+), 5 deletions(-)

diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/utils/WidgetsFactory.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/utils/WidgetsFactory.java
index 310287c46..c192b4c97 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/utils/WidgetsFactory.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/utils/WidgetsFactory.java
@@ -18,8 +18,12 @@ $Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $
 package org.fortiss.tooling.base.ui.utils;
 
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.FontMetrics;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Spinner;
+import org.eclipse.swt.widgets.Text;
 
 /**
  * Factory class for easier creation of different widgets.
@@ -27,7 +31,7 @@ import org.eclipse.swt.widgets.Spinner;
  * @author ratiu
  * @author $Author: hoelzl $
  * @version $Rev: 18709 $
- * @ConQAT.Rating GREEN Hash: 15511F7D05406B4F9F823388E07DFF40
+ * @ConQAT.Rating YELLOW Hash: 5EAA89263AB31479A5547CEF1165F352
  */
 public class WidgetsFactory {
 
@@ -52,4 +56,31 @@ public class WidgetsFactory {
 		spinner.setSelection(selection);
 		return spinner;
 	}
+
+	/**
+	 * Creates a new text field with a given size in characters. The text must be in a container
+	 * with GridLayout.
+	 * 
+	 * @param parent
+	 *            - the parent component
+	 * @param style
+	 *            - the style
+	 * @param initialText
+	 *            - the initial value
+	 * @param charsNumber
+	 *            - maximum number of characters of this text
+	 * @return the text field
+	 */
+	public static Text createText(Composite parent, int style, String initialText, int charsNumber) {
+		Text text = new Text(parent, style);
+		text.setText(initialText);
+		GC gc = new GC(text);
+		FontMetrics fm = gc.getFontMetrics();
+		int width = charsNumber * fm.getAverageCharWidth();
+		int height = fm.getHeight();
+		gc.dispose();
+		text.setLayoutData(new GridData(width, height));
+		parent.pack();
+		return text;
+	}
 }
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/PropertySectionBase.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/PropertySectionBase.java
index 03005c84b..a8f77ed42 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/PropertySectionBase.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/PropertySectionBase.java
@@ -56,7 +56,7 @@ import org.fortiss.tooling.kernel.service.ILibraryService;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: F463D51EE5F523EE8929648DB7D105C7
+ * @ConQAT.Rating YELLOW Hash: 7FD1F920BC8FC05E5ACF93DDE0A87F61
  */
 public abstract class PropertySectionBase extends AbstractPropertySection {
 
@@ -109,13 +109,25 @@ public abstract class PropertySectionBase extends AbstractPropertySection {
 			EObject eobj = (EObject)object;
 
 			if(ILibraryService.INSTANCE.isShadowElement(eobj)) {
-				for(Control c : composite.getChildren()) {
-					c.setEnabled(false);
-				}
+				disableControls();
 			}
 		}
 	}
 
+	/** Disables all children controls. */
+	protected void disableControls() {
+		for(Control c : composite.getChildren()) {
+			c.setEnabled(false);
+		}
+	}
+
+	/** Enables all children controls. */
+	protected void enableControls() {
+		for(Control c : composite.getChildren()) {
+			c.setEnabled(true);
+		}
+	}
+
 	/** This is used to set the single section input. The parameter may be null! */
 	protected abstract void setSectionInput(Object input);
 
-- 
GitLab