/****************************************************************************** * 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()); } } }