blob: db552104f54770af9f45728a6e46ff039c300d94 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2005, 2008 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*
****************************************************************************/
package org.eclipse.gmf.examples.runtime.diagram.logic.internal.wizards;
import java.io.InputStream;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.gmf.examples.runtime.diagram.logic.internal.l10n.ExampleDiagramLogicMessages;
import org.eclipse.gmf.examples.runtime.diagram.logic.internal.ui.parts.LogicNotationEditor;
import org.eclipse.gmf.examples.runtime.diagram.logic.internal.util.LogicDiagramFileCreator;
import org.eclipse.gmf.examples.runtime.diagram.logic.internal.util.LogicEditorUtil;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.wizards.EditorWizardPage;
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.util.DiagramFileCreator;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.Group;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.dialogs.ResourceSelectionDialog;
/**
* @author qili
* @canBeSeenBy org.eclipse.gmf.examples.runtime.diagram.logic.*
*
* Create Logic Diagram Wizard Page
*/
public class LogicWizardPage extends EditorWizardPage {
private Button emptyModel = null;
private Button adderModel = null;
private Button separateSemantics;
private Text semanticResource;
/**
* LogicDiagramWizardPage constructor
*
* @param aWorkbench
* workbench
* @param selection
* selection
*/
public LogicWizardPage(IWorkbench aWorkbench, IStructuredSelection selection) {
super("LogicDiagramPage", aWorkbench, selection); //$NON-NLS-1$
this.setTitle(ExampleDiagramLogicMessages.LogicWizardPage_Title);
this
.setDescription(ExampleDiagramLogicMessages.LogicWizardPage_Description);
}
public IFile createAndOpenDiagram(IPath containerPath, String fileName,
InputStream initialContents, String kind, IWorkbenchWindow dWindow,
IProgressMonitor progressMonitor, boolean saveDiagram) {
String semanticResourcePath = null;
if (separateSemantics.getSelection()
&& semanticResource.getText().length() > 0) {
semanticResourcePath = semanticResource.getText();
}
IFile diagramFile = LogicEditorUtil.createAndOpenDiagram(
getDiagramFileCreator(), containerPath, fileName,
initialContents, kind, dWindow, progressMonitor,
isOpenNewlyCreatedDiagramEditor(), saveDiagram,
semanticResourcePath);
if (adderModel.getSelection()) {
LogicNotationEditor editor = (LogicNotationEditor) dWindow
.getPartService().getActivePart();
IGraphicalEditPart diagramEditPart = (IGraphicalEditPart) editor
.getDiagramEditPart();
LogicDiagramFactory.CreateFourBitAdder(diagramEditPart,
progressMonitor);
editor.doSave(progressMonitor);
}
return diagramFile;
}
/*
* (non-Javadoc)
*
* @seeorg.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.wizards.
* EditorWizardPage#getDefaultFileName()
*/
protected String getDefaultFileName() {
return ExampleDiagramLogicMessages.LogicVisualizer_DefaultLogicDiagramFileName;
}
/*
* (non-Javadoc)
*
* @seeorg.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.wizards.
* EditorWizardPage#getDiagramFileCreator()
*/
public DiagramFileCreator getDiagramFileCreator() {
return LogicDiagramFileCreator.getInstance();
}
/*
* (non-Javadoc)
*
* @seeorg.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.wizards.
* EditorWizardPage#getDiagramKind()
*/
protected String getDiagramKind() {
return "logic"; //$NON-NLS-1$
}
@Override
public void createControl(Composite parent) {
super.createControl(parent);
Composite composite = (Composite) getControl();
// sample section generation group
Group group = new Group(composite, SWT.NONE);
group.setLayout(new GridLayout());
group
.setText(ExampleDiagramLogicMessages.LogicWizardPage_ModelOptions_GroupName);
group.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
| GridData.HORIZONTAL_ALIGN_FILL));
// sample section generation checkboxes
emptyModel = new Button(group, SWT.RADIO);
emptyModel
.setText(ExampleDiagramLogicMessages.LogicWizardPage_ModelOptions_EmptyModelName);
emptyModel.setSelection(true);
adderModel = new Button(group, SWT.RADIO);
adderModel
.setText(ExampleDiagramLogicMessages.LogicWizardPage_ModelOptions_FourBitAdderModelName);
}
protected void createAdvancedControls(Composite parent) {
super.createAdvancedControls(parent);
separateSemantics = new Button(parent, SWT.CHECK);
separateSemantics
.setText(ExampleDiagramLogicMessages.LogicWizardPage_StoreSemanticsSeparately);
separateSemantics.setSelection(false);
Composite separateSemanticsGroup = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.numColumns = 4;
layout.marginHeight = 0;
layout.marginWidth = 0;
separateSemanticsGroup.setLayout(layout);
GridData data = new GridData(GridData.FILL_HORIZONTAL);
separateSemanticsGroup.setLayoutData(data);
semanticResource = new Text(separateSemanticsGroup, SWT.BORDER);
data = new GridData(GridData.FILL_HORIZONTAL);
data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
data.horizontalSpan = 2;
semanticResource.setLayoutData(data);
semanticResource.setEnabled(false);
// browse button
final Button browseButton = new Button(separateSemanticsGroup, SWT.PUSH);
browseButton
.setText(ExampleDiagramLogicMessages.LogicWizardPage_BrowseSemanticResource);
browseButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
handleBrowseButtonPressed();
}
});
browseButton.setEnabled(false);
setButtonLayoutData(browseButton);
separateSemantics.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
semanticResource.setEnabled(!semanticResource.getEnabled());
browseButton.setEnabled(!browseButton.getEnabled());
semanticResource.setText(getContainerFullPath().append(
getFileName()).removeFileExtension().addFileExtension(
"logic2semantic").toString()); //$NON-NLS-1$
}
public void widgetDefaultSelected(SelectionEvent e) {
// Do nothing
}
});
}
protected void handleBrowseButtonPressed() {
ResourceSelectionDialog dialog = new ResourceSelectionDialog(
getShell(),
ResourcesPlugin.getWorkspace().getRoot(),
ExampleDiagramLogicMessages.LogicWizardPage_BrowseSemanticDialogTitle);
if (dialog.open() == ResourceSelectionDialog.OK) {
if (dialog.getResult().length == 0)
return;
IResource r = (IResource) dialog.getResult()[0];
semanticResource.setText(r.getFullPath().toString());
}
}
}