/*******************************************************************************
* Copyright (c) 2011-2012 Obeo.
* 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:
* Obeo - initial API and implementation
*******************************************************************************/
package org.obeonetwork.dsl.togaf.ui.wizards.newmodel;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.StringTokenizer;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.obeonetwork.dsl.togaf.ui.SessionCreationOperation;
/**
* The model initialization wizard page.
*
* @author ymortier
*/
// CHECKSTYLE:OFF
public class TogafModelWizardInitModelPage extends WizardPage {
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
protected Combo initialObjectField;
/**
* @generated <!-- begin-user-doc --> <!-- end-user-doc -->
*/
protected List<String> encodings;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
protected Combo encodingField;
/**
* Pass in the selection. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public TogafModelWizardInitModelPage(String pageId) {
super(pageId);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void createControl(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
{
GridLayout layout = new GridLayout();
layout.numColumns = 1;
layout.verticalSpacing = 12;
composite.setLayout(layout);
GridData data = new GridData();
data.verticalAlignment = GridData.FILL;
data.grabExcessVerticalSpace = true;
data.horizontalAlignment = GridData.FILL;
composite.setLayoutData(data);
}
Label containerLabel = new Label(composite, SWT.LEFT);
{
containerLabel
.setText(Messages.TogafModelWizardInitModelPage_ContainerLabel);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
containerLabel.setLayoutData(data);
}
initialObjectField = new Combo(composite, SWT.BORDER);
{
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = true;
initialObjectField.setLayoutData(data);
}
for (String objectName : getInitialObjectNames()) {
initialObjectField.add(objectName);
}
initialObjectField.select(0);
initialObjectField.addModifyListener(validator);
Label encodingLabel = new Label(composite, SWT.LEFT);
{
encodingLabel
.setText(Messages.TogafModelWizardInitModelPage_XmlEncodingLabel);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
encodingLabel.setLayoutData(data);
}
encodingField = new Combo(composite, SWT.BORDER);
{
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = true;
encodingField.setLayoutData(data);
}
for (String encoding : getEncodings()) {
encodingField.add(encoding);
}
encodingField.select(0);
encodingField.addModifyListener(validator);
setPageComplete(validatePage());
setControl(composite);
}
private List<String> getInitialObjectNames() {
List<String> names = new ArrayList<String>();
names.add(SessionCreationOperation.ENTERPRISE_ARCHITECTURE_OBJECT);
return names;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
protected ModifyListener validator = new ModifyListener() {
public void modifyText(ModifyEvent e) {
setPageComplete(validatePage());
}
};
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
protected boolean validatePage() {
return getInitialObjectName() != null
&& getEncodings().contains(encodingField.getText());
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public void setVisible(boolean visible) {
super.setVisible(visible);
if (visible) {
if (initialObjectField.getItemCount() == 1) {
initialObjectField.clearSelection();
encodingField.setFocus();
} else {
encodingField.clearSelection();
initialObjectField.setFocus();
}
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public String getEncoding() {
return encodingField.getText();
}
public String getInitialObjectName() {
return initialObjectField.getText();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
protected Collection<String> getEncodings() {
if (encodings == null) {
encodings = new ArrayList<String>();
for (StringTokenizer stringTokenizer = new StringTokenizer(
Messages.TogafModelWizardInitModelPage_XmlEncodings); stringTokenizer
.hasMoreTokens();) {
encodings.add(stringTokenizer.nextToken());
}
}
return encodings;
}
}