Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'target_explorer/plugins/org.eclipse.tcf.te.ui.forms/src/org/eclipse/tcf/te/ui/forms/FormLayoutFactory.java')
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.ui.forms/src/org/eclipse/tcf/te/ui/forms/FormLayoutFactory.java398
1 files changed, 398 insertions, 0 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui.forms/src/org/eclipse/tcf/te/ui/forms/FormLayoutFactory.java b/target_explorer/plugins/org.eclipse.tcf.te.ui.forms/src/org/eclipse/tcf/te/ui/forms/FormLayoutFactory.java
new file mode 100644
index 000000000..2a1fcba1c
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.ui.forms/src/org/eclipse/tcf/te/ui/forms/FormLayoutFactory.java
@@ -0,0 +1,398 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2008 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.tcf.te.ui.forms;
+
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+/**
+ * FormLayoutFactory
+ *
+ * @see org.eclipse.pde.internal.ui.editor.FormLayoutFactory
+ */
+public class FormLayoutFactory {
+
+ // Used in place of 0. If 0 is used, widget borders will appear clipped
+ // on some platforms (e.g. Windows XP Classic Theme).
+ // Form tool kit requires parent composites containing the widget to have
+ // at least 1 pixel border margins in order to paint the flat borders.
+ // The form toolkit paints flat borders on a given widget when native
+ // borders are not painted by SWT. See FormToolkit#paintBordersFor()
+ public static final int DEFAULT_CLEAR_MARGIN = 2;
+
+ // Required to allow space for field decorations
+ public static final int CONTROL_HORIZONTAL_INDENT = 3;
+
+ // UI Forms Standards
+
+ // FORM BODY
+ public static final int FORM_BODY_MARGIN_TOP = 12;
+ public static final int FORM_BODY_MARGIN_BOTTOM = 12;
+ public static final int FORM_BODY_MARGIN_LEFT = 6;
+ public static final int FORM_BODY_MARGIN_RIGHT = 6;
+ public static final int FORM_BODY_HORIZONTAL_SPACING = 20;
+ // Should be 20; but, we minus 3 because the section automatically pads the
+ // bottom margin by that amount
+ public static final int FORM_BODY_VERTICAL_SPACING = 17;
+ public static final int FORM_BODY_MARGIN_HEIGHT = 0;
+ public static final int FORM_BODY_MARGIN_WIDTH = 0;
+
+ // SECTION CLIENT
+ public static final int SECTION_CLIENT_MARGIN_TOP = 5;
+ public static final int SECTION_CLIENT_MARGIN_BOTTOM = 5;
+ // Should be 6; but, we minus 4 because the section automatically pads the
+ // left margin by that amount
+ public static final int SECTION_CLIENT_MARGIN_LEFT = 2;
+ // Should be 6; but, we minus 4 because the section automatically pads the
+ // right margin by that amount
+ public static final int SECTION_CLIENT_MARGIN_RIGHT = 2;
+ public static final int SECTION_CLIENT_HORIZONTAL_SPACING = 5;
+ public static final int SECTION_CLIENT_VERTICAL_SPACING = 5;
+ public static final int SECTION_CLIENT_MARGIN_HEIGHT = 0;
+ public static final int SECTION_CLIENT_MARGIN_WIDTH = 0;
+
+ public static final int SECTION_HEADER_VERTICAL_SPACING = 6;
+
+ // CLEAR
+ public static final int CLEAR_MARGIN_TOP = DEFAULT_CLEAR_MARGIN;
+ public static final int CLEAR_MARGIN_BOTTOM = DEFAULT_CLEAR_MARGIN;
+ public static final int CLEAR_MARGIN_LEFT = DEFAULT_CLEAR_MARGIN;
+ public static final int CLEAR_MARGIN_RIGHT = DEFAULT_CLEAR_MARGIN;
+ public static final int CLEAR_HORIZONTAL_SPACING = 0;
+ public static final int CLEAR_VERTICAL_SPACING = 0;
+ public static final int CLEAR_MARGIN_HEIGHT = 0;
+ public static final int CLEAR_MARGIN_WIDTH = 0;
+
+ // FORM PANE
+ public static final int FORM_PANE_MARGIN_TOP = 0;
+ public static final int FORM_PANE_MARGIN_BOTTOM = 0;
+ public static final int FORM_PANE_MARGIN_LEFT = 0;
+ public static final int FORM_PANE_MARGIN_RIGHT = 0;
+ public static final int FORM_PANE_HORIZONTAL_SPACING = FORM_BODY_HORIZONTAL_SPACING;
+ public static final int FORM_PANE_VERTICAL_SPACING = FORM_BODY_VERTICAL_SPACING;
+ public static final int FORM_PANE_MARGIN_HEIGHT = 0;
+ public static final int FORM_PANE_MARGIN_WIDTH = 0;
+
+ // MASTER DETAILS
+ public static final int MASTER_DETAILS_MARGIN_TOP = 0;
+ public static final int MASTER_DETAILS_MARGIN_BOTTOM = 0;
+ // Used only by masters part. Details part margin dynamically calculated
+ public static final int MASTER_DETAILS_MARGIN_LEFT = 0;
+ // Used only by details part. Masters part margin dynamically calculated
+ public static final int MASTER_DETAILS_MARGIN_RIGHT = 1;
+ public static final int MASTER_DETAILS_HORIZONTAL_SPACING = FORM_BODY_HORIZONTAL_SPACING;
+ public static final int MASTER_DETAILS_VERTICAL_SPACING = FORM_BODY_VERTICAL_SPACING;
+ public static final int MASTER_DETAILS_MARGIN_HEIGHT = 0;
+ public static final int MASTER_DETAILS_MARGIN_WIDTH = 0;
+
+ /**
+ *
+ */
+ private FormLayoutFactory() {
+ // NO-OP
+ }
+
+ /**
+ * For form bodies.
+ * @param makeColumnsEqualWidth
+ * @param numColumns
+ * @return
+ */
+ public static GridLayout createFormGridLayout(boolean makeColumnsEqualWidth, int numColumns) {
+ GridLayout layout = new GridLayout();
+
+ layout.marginHeight = FORM_BODY_MARGIN_HEIGHT;
+ layout.marginWidth = FORM_BODY_MARGIN_WIDTH;
+
+ layout.marginTop = FORM_BODY_MARGIN_TOP;
+ layout.marginBottom = FORM_BODY_MARGIN_BOTTOM;
+ layout.marginLeft = FORM_BODY_MARGIN_LEFT;
+ layout.marginRight = FORM_BODY_MARGIN_RIGHT;
+
+ layout.horizontalSpacing = FORM_BODY_HORIZONTAL_SPACING;
+ layout.verticalSpacing = FORM_BODY_VERTICAL_SPACING;
+
+ layout.makeColumnsEqualWidth = makeColumnsEqualWidth;
+ layout.numColumns = numColumns;
+
+ return layout;
+ }
+
+ /**
+ * For miscellaneous grouping composites.
+ * For sections (as a whole - header plus client).
+ * @param makeColumnsEqualWidth
+ * @param numColumns
+ * @return
+ */
+ public static GridLayout createClearGridLayout(boolean makeColumnsEqualWidth, int numColumns) {
+ GridLayout layout = new GridLayout();
+
+ layout.marginHeight = CLEAR_MARGIN_HEIGHT;
+ layout.marginWidth = CLEAR_MARGIN_WIDTH;
+
+ layout.marginTop = CLEAR_MARGIN_TOP;
+ layout.marginBottom = CLEAR_MARGIN_BOTTOM;
+ layout.marginLeft = CLEAR_MARGIN_LEFT;
+ layout.marginRight = CLEAR_MARGIN_RIGHT;
+
+ layout.horizontalSpacing = CLEAR_HORIZONTAL_SPACING;
+ layout.verticalSpacing = CLEAR_VERTICAL_SPACING;
+
+ layout.makeColumnsEqualWidth = makeColumnsEqualWidth;
+ layout.numColumns = numColumns;
+
+ return layout;
+ }
+
+ /**
+ * For form bodies.
+ * @param makeColumnsEqualWidth
+ * @param numColumns
+ * @return
+ */
+ public static TableWrapLayout createFormTableWrapLayout(boolean makeColumnsEqualWidth, int numColumns) {
+ TableWrapLayout layout = new TableWrapLayout();
+
+ layout.topMargin = FORM_BODY_MARGIN_TOP;
+ layout.bottomMargin = FORM_BODY_MARGIN_BOTTOM;
+ layout.leftMargin = FORM_BODY_MARGIN_LEFT;
+ layout.rightMargin = FORM_BODY_MARGIN_RIGHT;
+
+ layout.horizontalSpacing = FORM_BODY_HORIZONTAL_SPACING;
+ layout.verticalSpacing = FORM_BODY_VERTICAL_SPACING;
+
+ layout.makeColumnsEqualWidth = makeColumnsEqualWidth;
+ layout.numColumns = numColumns;
+
+ return layout;
+ }
+
+ /**
+ * For composites used to group sections in left and right panes.
+ * @param makeColumnsEqualWidth
+ * @param numColumns
+ * @return
+ */
+ public static TableWrapLayout createFormPaneTableWrapLayout(boolean makeColumnsEqualWidth, int numColumns) {
+ TableWrapLayout layout = new TableWrapLayout();
+
+ layout.topMargin = FORM_PANE_MARGIN_TOP;
+ layout.bottomMargin = FORM_PANE_MARGIN_BOTTOM;
+ layout.leftMargin = FORM_PANE_MARGIN_LEFT;
+ layout.rightMargin = FORM_PANE_MARGIN_RIGHT;
+
+ layout.horizontalSpacing = FORM_PANE_HORIZONTAL_SPACING;
+ layout.verticalSpacing = FORM_PANE_VERTICAL_SPACING;
+
+ layout.makeColumnsEqualWidth = makeColumnsEqualWidth;
+ layout.numColumns = numColumns;
+
+ return layout;
+ }
+
+ /**
+ * For composites used to group sections in left and right panes.
+ * @param makeColumnsEqualWidth
+ * @param numColumns
+ * @return
+ */
+ public static GridLayout createFormPaneGridLayout(boolean makeColumnsEqualWidth, int numColumns) {
+ GridLayout layout = new GridLayout();
+
+ layout.marginHeight = FORM_PANE_MARGIN_HEIGHT;
+ layout.marginWidth = FORM_PANE_MARGIN_WIDTH;
+
+ layout.marginTop = FORM_PANE_MARGIN_TOP;
+ layout.marginBottom = FORM_PANE_MARGIN_BOTTOM;
+ layout.marginLeft = FORM_PANE_MARGIN_LEFT;
+ layout.marginRight = FORM_PANE_MARGIN_RIGHT;
+
+ layout.horizontalSpacing = FORM_PANE_HORIZONTAL_SPACING;
+ layout.verticalSpacing = FORM_PANE_VERTICAL_SPACING;
+
+ layout.makeColumnsEqualWidth = makeColumnsEqualWidth;
+ layout.numColumns = numColumns;
+
+ return layout;
+ }
+
+ /**
+ * For miscellaneous grouping composites.
+ * For sections (as a whole - header plus client).
+ * @param makeColumnsEqualWidth
+ * @param numColumns
+ * @return
+ */
+ public static TableWrapLayout createClearTableWrapLayout(boolean makeColumnsEqualWidth, int numColumns) {
+ TableWrapLayout layout = new TableWrapLayout();
+
+ layout.topMargin = CLEAR_MARGIN_TOP;
+ layout.bottomMargin = CLEAR_MARGIN_BOTTOM;
+ layout.leftMargin = CLEAR_MARGIN_LEFT;
+ layout.rightMargin = CLEAR_MARGIN_RIGHT;
+
+ layout.horizontalSpacing = CLEAR_HORIZONTAL_SPACING;
+ layout.verticalSpacing = CLEAR_VERTICAL_SPACING;
+
+ layout.makeColumnsEqualWidth = makeColumnsEqualWidth;
+ layout.numColumns = numColumns;
+
+ return layout;
+ }
+
+ /**
+ * For master sections belonging to a master details block.
+ * @param makeColumnsEqualWidth
+ * @param numColumns
+ * @return
+ */
+ public static GridLayout createMasterGridLayout(boolean makeColumnsEqualWidth, int numColumns) {
+ GridLayout layout = new GridLayout();
+
+ layout.marginHeight = MASTER_DETAILS_MARGIN_HEIGHT;
+ layout.marginWidth = MASTER_DETAILS_MARGIN_WIDTH;
+
+ layout.marginTop = MASTER_DETAILS_MARGIN_TOP;
+ layout.marginBottom = MASTER_DETAILS_MARGIN_BOTTOM;
+ layout.marginLeft = MASTER_DETAILS_MARGIN_LEFT;
+ // Cannot set layout on a sash form.
+ // In order to replicate the horizontal spacing between sections,
+ // divide the amount by 2 and set the master section right margin to
+ // half the amount and set the left details section margin to half
+ // the amount. The default sash width is currently set at 3.
+ // Minus 1 pixel from each half. Use the 1 left over pixel to separate
+ // the details section from the vertical scollbar.
+ int marginRight = MASTER_DETAILS_HORIZONTAL_SPACING;
+ if (marginRight > 0) {
+ marginRight = marginRight / 2;
+ if (marginRight > 0) {
+ marginRight--;
+ }
+ }
+ layout.marginRight = marginRight;
+
+ layout.horizontalSpacing = MASTER_DETAILS_HORIZONTAL_SPACING;
+ layout.verticalSpacing = MASTER_DETAILS_VERTICAL_SPACING;
+
+ layout.makeColumnsEqualWidth = makeColumnsEqualWidth;
+ layout.numColumns = numColumns;
+
+ return layout;
+ }
+
+ /**
+ * For details sections belonging to a master details block.
+ * @param makeColumnsEqualWidth
+ * @param numColumns
+ * @return
+ */
+ public static GridLayout createDetailsGridLayout(boolean makeColumnsEqualWidth, int numColumns) {
+ GridLayout layout = new GridLayout();
+
+ layout.marginHeight = MASTER_DETAILS_MARGIN_HEIGHT;
+ layout.marginWidth = MASTER_DETAILS_MARGIN_WIDTH;
+
+ layout.marginTop = MASTER_DETAILS_MARGIN_TOP;
+ layout.marginBottom = MASTER_DETAILS_MARGIN_BOTTOM;
+ // Cannot set layout on a sash form.
+ // In order to replicate the horizontal spacing between sections,
+ // divide the amount by 2 and set the master section right margin to
+ // half the amount and set the left details section margin to half
+ // the amount. The default sash width is currently set at 3.
+ // Minus 1 pixel from each half. Use the 1 left over pixel to separate
+ // the details section from the vertical scollbar.
+ int marginLeft = MASTER_DETAILS_HORIZONTAL_SPACING;
+ if (marginLeft > 0) {
+ marginLeft = marginLeft / 2;
+ if (marginLeft > 0) {
+ marginLeft--;
+ }
+ }
+ layout.marginLeft = marginLeft;
+ layout.marginRight = MASTER_DETAILS_MARGIN_RIGHT;
+
+ layout.horizontalSpacing = MASTER_DETAILS_HORIZONTAL_SPACING;
+ layout.verticalSpacing = MASTER_DETAILS_VERTICAL_SPACING;
+
+ layout.makeColumnsEqualWidth = makeColumnsEqualWidth;
+ layout.numColumns = numColumns;
+
+ return layout;
+ }
+
+ /**
+ * For composites set as section clients.
+ * For composites containg form text.
+ * @param makeColumnsEqualWidth
+ * @param numColumns
+ * @return
+ */
+ public static GridLayout createSectionClientGridLayout(boolean makeColumnsEqualWidth, int numColumns) {
+ GridLayout layout = new GridLayout();
+
+ layout.marginHeight = SECTION_CLIENT_MARGIN_HEIGHT;
+ layout.marginWidth = SECTION_CLIENT_MARGIN_WIDTH;
+
+ layout.marginTop = SECTION_CLIENT_MARGIN_TOP;
+ layout.marginBottom = SECTION_CLIENT_MARGIN_BOTTOM;
+ layout.marginLeft = SECTION_CLIENT_MARGIN_LEFT;
+ layout.marginRight = SECTION_CLIENT_MARGIN_RIGHT;
+
+ layout.horizontalSpacing = SECTION_CLIENT_HORIZONTAL_SPACING;
+ layout.verticalSpacing = SECTION_CLIENT_VERTICAL_SPACING;
+
+ layout.makeColumnsEqualWidth = makeColumnsEqualWidth;
+ layout.numColumns = numColumns;
+
+ return layout;
+ }
+
+ /**
+ * For composites set as section clients.
+ * For composites containg form text.
+ * @param makeColumnsEqualWidth
+ * @param numColumns
+ * @return
+ */
+ public static TableWrapLayout createSectionClientTableWrapLayout(boolean makeColumnsEqualWidth, int numColumns) {
+ TableWrapLayout layout = new TableWrapLayout();
+
+ layout.topMargin = SECTION_CLIENT_MARGIN_TOP;
+ layout.bottomMargin = SECTION_CLIENT_MARGIN_BOTTOM;
+ layout.leftMargin = SECTION_CLIENT_MARGIN_LEFT;
+ layout.rightMargin = SECTION_CLIENT_MARGIN_RIGHT;
+
+ layout.horizontalSpacing = SECTION_CLIENT_HORIZONTAL_SPACING;
+ layout.verticalSpacing = SECTION_CLIENT_VERTICAL_SPACING;
+
+ layout.makeColumnsEqualWidth = makeColumnsEqualWidth;
+ layout.numColumns = numColumns;
+
+ return layout;
+ }
+
+ /**
+ * Debug method.
+ *
+ * MAGENTA = 11
+ * CYAN = 13
+ * GREEN = 5
+ * @param container
+ * @param color
+ */
+ public static void visualizeLayoutArea(Composite container, int color) {
+ container.setBackground(Display.getCurrent().getSystemColor(color));
+ }
+}

Back to the top