/******************************************************************************* * Copyright (c) 2000, 2005 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.gef.examples.logicdesigner; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.io.ObjectOutputStream; import org.eclipse.swt.SWT; 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.Label; import org.eclipse.core.resources.IFile; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.dialogs.WizardNewFileCreationPage; import org.eclipse.ui.ide.IDE; import org.eclipse.gef.examples.logicdesigner.model.LogicDiagram; import org.eclipse.gef.examples.logicdesigner.model.LogicDiagramFactory; public class LogicWizardPage1 extends WizardNewFileCreationPage implements SelectionListener { private IWorkbench workbench; private static int exampleCount = 1; private Button model1 = null; private Button model2 = null; private int modelSelected = 1; public LogicWizardPage1(IWorkbench aWorkbench, IStructuredSelection selection) { super("sampleLogicPage1", selection); //$NON-NLS-1$ this.setTitle(LogicMessages.CreateLogicPage1_Title); this.setDescription(LogicMessages.CreateLogicPage1_Description); this.setImageDescriptor(ImageDescriptor.createFromFile(getClass(),"icons/logicbanner.gif")); //$NON-NLS-1$ this.workbench = aWorkbench; } public void createControl(Composite parent) { super.createControl(parent); this.setFileName("emptyModel" + exampleCount + ".logic"); //$NON-NLS-2$//$NON-NLS-1$ Composite composite = (Composite)getControl(); // sample section generation group Group group = new Group(composite,SWT.NONE); group.setLayout(new GridLayout()); group.setText(LogicMessages.CreateLogicPage1_ModelNames_GroupName); group.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL)); // sample section generation checkboxes model1 = new Button(group,SWT.RADIO); model1.setText(LogicMessages.CreateLogicPage1_ModelNames_EmptyModelName); model1.addSelectionListener(this); model1.setSelection(true); model2 = new Button(group,SWT.RADIO); model2.setText(LogicMessages.CreateLogicPage1_ModelNames_FourBitAdderModelName); model2.addSelectionListener(this); new Label(composite,SWT.NONE); setPageComplete(validatePage()); } protected InputStream getInitialContents() { LogicDiagram ld = new LogicDiagram(); if (modelSelected == 2) ld = (LogicDiagram)LogicDiagramFactory.createLargeModel(); ByteArrayInputStream bais = null; try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(ld); oos.flush(); oos.close(); baos.close(); bais = new ByteArrayInputStream(baos.toByteArray()); bais.close(); } catch(Exception e) { e.printStackTrace(); } return bais; } public boolean finish() { IFile newFile = createNewFile(); if (newFile == null) return false; // ie.- creation was unsuccessful // Since the file resource was created fine, open it for editing // iff requested by the user try { IWorkbenchWindow dwindow = workbench.getActiveWorkbenchWindow(); IWorkbenchPage page = dwindow.getActivePage(); if (page != null) IDE.openEditor(page, newFile, true); } catch (org.eclipse.ui.PartInitException e) { e.printStackTrace(); return false; } exampleCount++; return true; } /** * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent) */ public void widgetSelected(SelectionEvent e) { if( e.getSource() == model1 ){ modelSelected = 1; setFileName("emptyModel" + exampleCount + ".logic"); //$NON-NLS-2$//$NON-NLS-1$ } else { modelSelected = 2; setFileName("fourBitAdder" + exampleCount + ".logic"); //$NON-NLS-2$//$NON-NLS-1$ } } /** * Empty method */ public void widgetDefaultSelected(SelectionEvent e) { } }