blob: 0bc7669541d2a83c75a2d4426d07b5ba451f89df [file] [log] [blame]
/*
* Copyright (c) 2010-2012 Eike Stepper (Berlin, Germany) 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:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.net4j.util.ui.container;
import org.eclipse.net4j.util.ObjectUtil;
import org.eclipse.net4j.util.container.IManagedContainer;
import org.eclipse.net4j.util.event.Notifier;
import org.eclipse.net4j.util.ui.UIUtil;
import org.eclipse.net4j.util.ui.ValidationContext;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import java.util.Arrays;
import java.util.List;
/**
* @author Eike Stepper
* @since 3.1
*/
public abstract class ElementWizard extends Notifier implements IElementWizard, ValidationContext
{
private IManagedContainer container;
private String productGroup;
private String factoryType;
private String defaultDescription;
private String resultDescription;
private ValidationContext context;
public ElementWizard()
{
}
protected IManagedContainer getContainer()
{
return container;
}
protected String getProductGroup()
{
return productGroup;
}
protected String getFactoryType()
{
return factoryType;
}
protected String getDefaultDescription()
{
return defaultDescription;
}
public String getResultDescription()
{
return resultDescription;
}
public Object getResultElement()
{
return container.getElement(productGroup, factoryType, resultDescription);
}
public void create(Composite parent, IManagedContainer container, String productGroup, String factoryType,
String defaultDescription, ValidationContext context)
{
this.container = container;
this.productGroup = productGroup;
this.factoryType = factoryType;
this.defaultDescription = defaultDescription;
this.context = context;
create(parent);
}
protected void setResultDescription(String resultDescription)
{
String oldDescription = this.resultDescription;
if (!ObjectUtil.equals(resultDescription, oldDescription))
{
this.resultDescription = resultDescription;
fireEvent();
}
}
public void setValidationError(Object source, String message)
{
if (context != null)
{
context.setValidationError(source, message);
}
}
protected abstract void create(Composite parent);
public static Label addLabel(Composite parent, String label)
{
Label control = new Label(parent, SWT.NONE);
control.setText(label);
control.setLayoutData(UIUtil.createGridData(false, false));
return control;
}
public static Text addText(Composite parent, String label)
{
addLabel(parent, label);
Text control = new Text(parent, SWT.BORDER);
control.setLayoutData(UIUtil.createGridData(true, false));
return control;
}
/**
* @since 3.2
*/
public static Combo addCombo(Composite parent, String label, List<String> choices)
{
addLabel(parent, label);
Combo control = new Combo(parent, SWT.SINGLE);
control.setLayoutData(UIUtil.createGridData(true, false));
for (String choice : choices)
{
control.add(choice);
}
return control;
}
public static Combo addCombo(Composite parent, String label, String... choices)
{
return addCombo(parent, label, Arrays.asList(choices));
}
}