com.ibm.xsp.extlib.designer.xspprops.XSPEditorUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.ibm.xsp.extlib.designer.xspprops.XSPEditorUtil.java

Source

/*
 *  Copyright IBM Corp. 2011, 2016
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at:
 * 
 * http://www.apache.org/licenses/LICENSE-2.0 
 * 
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
 * implied. See the License for the specific language governing 
 * permissions and limitations under the License.
 */
package com.ibm.xsp.extlib.designer.xspprops;

import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;

import com.ibm.commons.swt.controls.custom.CustomCheckBox;
import com.ibm.commons.swt.controls.custom.CustomComposite;
import com.ibm.commons.swt.data.controls.DCCheckbox;
import com.ibm.commons.swt.data.controls.DCComboBox;
import com.ibm.commons.swt.data.controls.DCLabel;
import com.ibm.commons.swt.data.controls.DCPanel;
import com.ibm.commons.swt.data.controls.DCRadioButton;
import com.ibm.commons.swt.data.controls.DCText;

/**
 * @author mleland
 *
 */
public class XSPEditorUtil {

    static public Section createSection(FormToolkit toolkit, Composite parent, String title, int hSpan, int vSpan) {

        Section section = toolkit.createSection(parent, Section.SHORT_TITLE_BAR);
        GridData osectionGridData = new GridData(SWT.FILL, SWT.BEGINNING, false, false);
        osectionGridData.horizontalSpan = hSpan;
        osectionGridData.verticalSpan = vSpan;
        osectionGridData.horizontalIndent = 5;
        section.setLayoutData(osectionGridData);
        section.setText(title);

        GridLayout osectionGL = new GridLayout(1, true);
        osectionGL.marginHeight = 0;
        osectionGL.marginWidth = 0;
        section.setLayout(osectionGL);

        return section;
    }

    // caller sets grid data, too variable
    static public DCPanel createDCPanel(Composite parent, int cols, String attrName, String idName) {
        return createDCPanel(parent, cols, 20, -1, attrName, idName);
    }

    // caller sets grid data, too variable
    static public DCPanel createDCPanel(Composite parent, int cols, int hzSpace, int vSpace, String attrName,
            String idName) {
        DCPanel dcPanel = new DCPanel(parent, SWT.NONE, idName);
        dcPanel.setParentPropertyName(attrName);
        dcPanel.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
        GridLayout dcpgl = new GridLayout(cols, false);
        if (hzSpace != -1) // meaning don't set it, take default
            dcpgl.horizontalSpacing = hzSpace;
        if (vSpace != -1)
            dcpgl.verticalSpacing = vSpace;
        dcpgl.marginWidth = 0;
        dcpgl.marginHeight = 0;
        dcPanel.setLayout(dcpgl);
        return dcPanel;
    }

    static public Composite createSectionChild(Section parent, int cols) {
        Composite child = new Composite(parent, SWT.NONE);
        child.setLayoutData(new GridData(SWT.BEGINNING, SWT.FILL, false, false));
        child.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
        GridLayout lcgl = new GridLayout(cols, false);
        lcgl.horizontalSpacing = 20;
        lcgl.marginWidth = 0;
        child.setLayout(lcgl);
        return child;
    }

    static public DCCheckbox createCheckboxTF(Composite parent, String labelText, String attrName, int width) {
        return createIndentedCheckbox(parent, labelText, attrName, width, 0, Boolean.TRUE.toString(),
                Boolean.FALSE.toString());
    }

    static public DCCheckbox createIndentedCheckboxTF(Composite parent, String labelText, String attrName,
            int width, int indentAmt) {
        return createIndentedCheckbox(parent, labelText, attrName, width, indentAmt, Boolean.TRUE.toString(),
                Boolean.FALSE.toString());
    }

    static public DCCheckbox createCheckbox(Composite parent, String labelText, String attrName, int width,
            String checked, String unchecked) {
        return createIndentedCheckbox(parent, labelText, attrName, width, 0, checked, unchecked);
    }

    static public DCCheckbox createIndentedCheckbox(Composite parent, String labelText, String attrName, int width,
            int indentAmt, String checked, String unchecked) {
        DCCheckbox dcc = new DCCheckbox(parent, SWT.CHECK, attrName); // use the attrname as the id by default
        dcc.setAttributeName(attrName);
        dcc.setText(labelText);
        dcc.setCheckedValue(checked);
        dcc.setUncheckedValue(unchecked);
        dcc.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
        GridData gd = new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, width, 1);
        if (indentAmt != 0)
            gd.horizontalIndent = indentAmt;
        dcc.setLayoutData(gd);
        return dcc;
    }

    static public Label createIndentedLabel(Composite parent, String labelText, int width, int indentAmt) {
        Label newLabel = new Label(parent, SWT.NONE);
        newLabel.setText(labelText);
        GridData ourGD = new GridData(SWT.BEGINNING, SWT.CENTER, false, false, width, 1);
        if (indentAmt != 0)
            ourGD.horizontalIndent = indentAmt;
        newLabel.setLayoutData(ourGD);
        newLabel.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
        return newLabel;
    }

    static public Label createLabel(Composite parent, String labelText, int width) {
        return createIndentedLabel(parent, labelText, width, 0);
    }

    static public DCLabel createDCLabel(Composite parent, String attrName, int width) {
        return createIndentedDCLabel(parent, attrName, width, 0);
    }

    static public DCLabel createIndentedDCLabel(Composite parent, String attrName, int width, int indentAmt) {
        DCLabel newLabel = new DCLabel(parent, SWT.NONE, attrName); // use the attrname as the id by default
        newLabel.setAttributeName(attrName);
        GridData gd = new GridData(SWT.BEGINNING, SWT.CENTER, false, false, width, 1);
        if (indentAmt != 0)
            gd.horizontalIndent = indentAmt;
        newLabel.setLayoutData(gd);
        newLabel.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
        return newLabel;
    }

    /**
     * this method will create a new Button on the given composite, with the given style and text.  
     * @param aComposite
     * @param aStyle
     * @param aLabel
     * @return DCCommandButton
     */
    static public Button createButton(Composite aComposite, int aStyle, String aLabel) {
        Button button = new Button(aComposite, aStyle);
        button.setBackground(aComposite.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
        button.setText(aLabel);
        button.setEnabled(true);
        return button;
    }

    static public CLabel createCLabel(Composite parent, String label, int hSpan) {
        CLabel pgTitle = new CLabel(parent, SWT.NONE);
        pgTitle.setText(label);
        pgTitle.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
        pgTitle.setFont(JFaceResources.getHeaderFont());
        GridData titleGridData = new GridData();
        titleGridData.grabExcessHorizontalSpace = true;
        titleGridData.horizontalSpan = hSpan;
        pgTitle.setLayoutData(titleGridData);
        return pgTitle;
    }

    static public Composite createFormComposite(ScrolledForm scrolledForm) {
        Composite formatComposite = scrolledForm.getBody();

        GridLayout gridLayout = new GridLayout();
        gridLayout.numColumns = 2;
        gridLayout.makeColumnsEqualWidth = false;
        gridLayout.horizontalSpacing = 30;
        gridLayout.verticalSpacing = 7;
        gridLayout.marginWidth = 14;
        gridLayout.marginHeight = 14;

        formatComposite.setLayout(gridLayout);
        formatComposite.setBackground(scrolledForm.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
        return formatComposite;
    }

    static public DCComboBox createDCCombo(Composite parent, String attrName, int width, boolean bReadOnly,
            boolean bHStretch) {
        DCComboBox newCombo = new DCComboBox(parent, bReadOnly ? SWT.READ_ONLY : SWT.NONE, attrName);
        newCombo.setAttributeName(attrName);
        newCombo.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, bHStretch, false, width, 1));
        return newCombo;
    }

    static public Composite createSideComposite(Composite formatComposite) {
        Composite sideComposite = new Composite(formatComposite, SWT.NONE);
        sideComposite.setBackground(formatComposite.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
        sideComposite.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false, 1, 4));
        GridLayout gridLayout = new GridLayout();
        gridLayout.numColumns = 1;
        gridLayout.makeColumnsEqualWidth = false;
        gridLayout.verticalSpacing = 20;
        gridLayout.marginWidth = 0;
        gridLayout.marginHeight = 0;
        sideComposite.setLayout(gridLayout);

        return sideComposite;
    }

    static public CustomComposite createZeroMarginComposite(Composite parent, int gridCols, int gdSpan, int glSpan,
            String id) {
        CustomComposite holder = new CustomComposite(parent, SWT.NONE, id);
        holder.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
        holder.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false, gdSpan, 1));
        GridLayout gridLayout = new GridLayout(gridCols, false);
        gridLayout.horizontalSpacing = glSpan;
        gridLayout.marginWidth = 0;
        gridLayout.marginHeight = 0;
        holder.setLayout(gridLayout);
        return holder;
    }

    static public DCRadioButton createRadio(Composite parent, String attrName, String label, String checkedVal,
            String idVal, int cols) {
        DCRadioButton ourButton = new DCRadioButton(parent, SWT.RADIO, idVal);
        ourButton.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
        ourButton.setAttributeName(attrName);
        ourButton.setText(label);
        ourButton.setCheckedValue(checkedVal);
        ourButton.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false, cols, 1));
        return ourButton;
    }

    static public DCText createText(Composite parent, String attrName, int horzSpan, int horzIndent, int cols) {
        DCText ourText = new DCText(parent, SWT.BORDER, attrName);
        ourText.setAttributeName(attrName);
        if (cols > 0)
            ourText.setCols(cols);
        GridData gd = new GridData(GridData.FILL, GridData.CENTER, true, false, horzSpan, 1);
        if (horzIndent > 0)
            gd.horizontalIndent = horzIndent;
        ourText.setLayoutData(gd);
        return ourText;
    }

    static public DCText createPasswordText(Composite parent, String attrName, int horzSpan, int horzIndent,
            int cols) {
        DCText ourText = new DCText(parent, SWT.BORDER | SWT.PASSWORD, attrName);
        ourText.setAttributeName(attrName);
        if (cols > 0)
            ourText.setCols(cols);
        GridData gd = new GridData(GridData.FILL, GridData.CENTER, true, false, horzSpan, 1);
        if (horzIndent > 0)
            gd.horizontalIndent = horzIndent;
        ourText.setLayoutData(gd);
        return ourText;
    }

    static public DCText createTextNoFill(Composite parent, String attrName, int horzSpan, int horzIndent,
            int cols) {
        DCText ourText = new DCText(parent, SWT.BORDER, attrName);
        ourText.setAttributeName(attrName);
        if (cols > 0)
            ourText.setCols(cols);
        GridData gd = new GridData(GridData.BEGINNING, GridData.CENTER, false, false, horzSpan, 1);
        if (horzIndent > 0)
            gd.horizontalIndent = horzIndent;
        ourText.setLayoutData(gd);
        return ourText;
    }

    static public CustomComposite createNestedComposite(Composite parent, String id) {
        CustomComposite atComp = new CustomComposite(parent, SWT.NONE, id);
        atComp.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
        GridLayout nestLayout = new GridLayout(2, false);
        nestLayout.marginHeight = 0;
        nestLayout.marginWidth = 0;
        nestLayout.horizontalSpacing = 10;
        atComp.setLayout(nestLayout);
        atComp.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 1, 1));
        return atComp;
    }

    static public CustomCheckBox createIndentedCheck(Composite parent, String labelText, String id, int indent) {
        CustomCheckBox dcc = new CustomCheckBox(parent, SWT.CHECK, id);
        dcc.setText(labelText);
        dcc.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
        GridData gd = new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, 1, 1);
        gd.horizontalIndent = indent;
        dcc.setLayoutData(gd);
        return dcc;
    }
}