/*
* Copyright (c) 2006 Eclipse.org
*
* 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:
* Dmitry Stadnik - initial API and implementation
*/
package org.eclipse.gmf.internal.common.ui;
import java.util.Observable;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
/**
* @author dstadnik
*/
public class CreateNewModelExtension extends Observable implements ModelSelectionPageExtension {
private final ModelSelectionPage page;
private boolean createNewModel;
public CreateNewModelExtension(ModelSelectionPage page) {
this.page = page;
}
public final boolean shouldCreateNewModel() {
return createNewModel;
}
protected void setCreateNewModel(boolean value) {
if (createNewModel == value) {
return;
}
this.createNewModel = value;
page.setReadOnly(value);
page.validatePage();
setChanged();
notifyObservers(Boolean.valueOf(createNewModel));
}
protected String getLabelText() {
return Messages.CreateNewModelExtensionCreateNewModel;
}
public void createControl(Composite parent) {
final Button btn = new Button(parent, SWT.CHECK);
btn.setText(getLabelText());
btn.setSelection(createNewModel);
btn.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
}
public void widgetSelected(SelectionEvent e) {
setCreateNewModel(btn.getSelection());
}
});
}
public void setResource(Resource resource) {
}
public void validatePage() {
if (!page.isModelRequired()) {
return;
}
if (createNewModel) {
page.setPageComplete(true);
} else {
page.setPageComplete(page.getResource() != null);
}
}
}