/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.components.cpacs.vampzeroinitializer.gui;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
import de.rcenvironment.core.gui.resources.api.ImageManager;
import de.rcenvironment.core.gui.resources.api.StandardImages;
/**
* Abstract super class to abstract over stand-alone SWT and Eclipse-SWT widget generation.
*
* @author Arne Bachmann
* @author Markus Kunde
*/
public abstract class AbstractSwtHelper {
/**
* Icon for revert button.
*/
protected Image undoImage;
/**
* The apply image.
*/
protected Image okImage;
/**
* The save image.
*/
protected Image saveImage;
/**
* Initialize necessary resources.
*
* @param display The parent display
*/
protected AbstractSwtHelper(final Display display) {
undoImage = ImageManager.getInstance().getSharedImage(StandardImages.UNDO);
saveImage = ImageManager.getInstance().getSharedImage(StandardImages.SAVE);
okImage = ImageManager.getInstance().getSharedImage(StandardImages.TICK);
}
/**
* Helper to dispose composites.
*
* @param composite The composite to dispose
*/
public void disposeRecursively(final Composite composite) {
for (final Control c : composite.getChildren()) {
if (c instanceof Composite) {
disposeRecursively((Composite) c);
}
c.dispose();
}
}
/**
* Clean up. Currently nothing. Subclasses may override.
*/
protected void dispose() {}
/**
* Currently nothing. Subclasses may override.
*/
protected void refresh() {}
/**
* Create a main composite.
*
* @return The composite
*/
public abstract Composite createMainComposite();
/**
* Create a sub-composite.
*
* @param parent The parent
* @return The composite
*/
public abstract Composite createComposite(final Composite parent);
/**
* Create a sub-composite with n columns.
*
* @param parent The parent
* @param columnsContained Layout columns
* @param columns Column spread of widget
* @return The widget
*/
public abstract Composite createComposite(final Composite parent, final int columnsContained, int... columns);
/**
* Create a separator label with n columns.
*
* @param parent The parent
* @param vertical Direction
* @param columns Column spread of widget
* @return The widget
*/
public abstract Label createSeparator(final Composite parent, final boolean vertical, final int... columns);
/**
* Create a text with n columns.
*
* @param parent The parent
* @param initialText Text to create
* @param colSpan Column spread of widget
* @return The widget
*/
public abstract Text createText(final Composite parent, final String initialText, final int... colSpan);
/**
* Create a button with n columns.
*
* @param parent The parent
* @param text Text to create
* @param listener The listener to notify when clicked
* @param alignment Alignment
* @return The widget
*/
public abstract Button createButton(final Composite parent, final String text, final Listener listener, final int... alignment);
/**
* Create a label with n columns.
*
* @param parent The parent
* @param text Label text
* @param columns Column spread of widget
* @return The widget
*/
public abstract Label createLabel(final Composite parent, final String text, int... columns);
/**
* Create a drop-down read-only combo box.
*
* @param parent The parent
* @param initialTexts Texts to show
* @param listener The listener to notify upon selection changes
* @return The widget
*/
public abstract Combo createCombo(final Composite parent, final String[] initialTexts, final Listener listener);
/**
* Create a default layout (TableWrapLayout).
*
* @param columnsContained No of columns contained
*
* @return The layout
*/
public abstract Layout createDefaultLayout(final int columnsContained);
}