/* Copyright (C) 2008-2010 by Bjoern Freitag (Bjoern.Freitag@inf.tu-dresden.de) This file is part of the OCL 2 Java Code Generator of Dresden OCL2 for Eclipse. Dresden OCL2 for Eclipse is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Dresden OCL2 for Eclipse is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Dresden OCL2 for Eclipse. If not, see <http://www.gnu.org/licenses/>. */ package org.dresdenocl.tools.codegen.declarativ.ocl2sql.ui.internal.wizards; import org.eclipse.jface.dialogs.Dialog; 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.events.MouseEvent; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.dresdenocl.tools.codegen.declarativ.IOcl2DeclSettings; import org.dresdenocl.tools.codegen.declarativ.ocl2sql.ui.internal.Ocl2SqlUIMessages; import org.dresdenocl.tools.codegen.ui.impl.wizards.AbstractMouseListener; import org.dresdenocl.tools.codegen.ui.impl.wizards.IUpdatePage; import org.dresdenocl.tools.template.ITemplateGroup; import org.dresdenocl.tools.template.TemplatePlugin; import org.dresdenocl.tools.template.exception.TemplateException; /** * <p> * The {@link SettingsPage} of the code generation wizard. * </p> * * @author Bjoern Freitag */ public class SettingsPage extends WizardPage implements IUpdatePage { /** The settings of the code generator associated with this wizard page. */ private IOcl2DeclSettings settings; private SQLSettingsComposite settingComposite; /** * <p> * Creates a new {@link SettingsPage} which provides general settings for code * generation. * </p> * * @param iOcl2CodeSettings * The settings of the code generator associated with this wizard * page. */ public SettingsPage(IOcl2DeclSettings iOcl2DeclSettings) { super("SettingsPage"); setTitle(Ocl2SqlUIMessages.SettingsPage_Title); setDescription(Ocl2SqlUIMessages.SettingsPage_Description); this.settings = iOcl2DeclSettings; } /** * <p> * Helper method to create a push button. * </p> */ private Button createButton(Composite parent, String label) { Button result; result = new Button(parent, SWT.PUSH); result.setFont(parent.getFont()); result.setText(label); return result; } /* * (non-Javadoc) * @see * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets * .Composite) */ public void createControl(Composite parent) { Composite panel; GridLayout layout; Button restoreDefaultsButton; /* Create the panel. */ panel = new Composite(parent, SWT.NONE); /* Set panel attributes. */ layout = new GridLayout(1, true); layout.verticalSpacing = 20; panel.setLayout(layout); panel.setFont(parent.getFont()); /* Create UI elements. */ settingComposite = new SQLSettingsComposite(panel,this,settings); /* Create button to restore default settings. */ restoreDefaultsButton = createButton(panel, Ocl2SqlUIMessages.SettingsPage_RestoreDefaults); /* Add selection listener. */ restoreDefaultsButton.addMouseListener(new AbstractMouseListener() { public void mouseUp(MouseEvent e) { restoreDefaults(); } }); /* Set the initial selection. */ this.restoreDefaults(); this.updatePageComplete(); /* Set font. */ Dialog.applyDialogFont(parent); /* Connect the wizard page with the wizard. */ this.setControl(panel); } /** * <p> * Helper method which restores the default settings. * </p> */ private void restoreDefaults() { this.settingComposite.restore(); this.updatePageComplete(); } /** * <p> * Updates the <code>pageComplete</code> status of the wizard page. * </p> */ public void updatePageComplete() { boolean complete; /* Reset error messages. */ setErrorMessage(null); setMessage(null); /* By default the page is not complete. */ complete = true; setPageComplete(complete); } }