Java tutorial
package com.hudson.hibernatesynchronizer.properties; /* * The Apache Software License, Version 1.1 * * Copyright (c) 2000-2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Velocity", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.Enumeration; import java.util.Iterator; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; import org.eclipse.core.resources.IProject; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.search.IJavaSearchScope; import org.eclipse.jdt.core.search.SearchEngine; import org.eclipse.jdt.internal.core.JavaProject; import org.eclipse.jdt.internal.core.PackageFragment; import org.eclipse.jdt.ui.IJavaElementSearchConstants; import org.eclipse.jdt.ui.JavaUI; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.preference.BooleanFieldEditor; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.jface.preference.PreferenceStore; import org.eclipse.jface.preference.RadioGroupFieldEditor; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.viewers.ColumnLayoutData; import org.eclipse.jface.viewers.ColumnWeightData; import org.eclipse.jface.viewers.TableLayout; import org.eclipse.jface.window.ApplicationWindow; import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.KeyListener; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Color; 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.Control; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.TabItem; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.dialogs.PropertyPage; import org.eclipse.ui.dialogs.SelectionDialog; import com.hudson.hibernatesynchronizer.Constants; import com.hudson.hibernatesynchronizer.Plugin; import com.hudson.hibernatesynchronizer.resource.ResourceManager; import com.hudson.hibernatesynchronizer.resource.Snippet; import com.hudson.hibernatesynchronizer.resource.Template; import com.hudson.hibernatesynchronizer.resource.TemplateLocation; import com.hudson.hibernatesynchronizer.util.EditorUtil; import com.hudson.hibernatesynchronizer.util.HSUtil; import com.hudson.hibernatesynchronizer.util.UIUtil; /** * @author <a href="mailto: jhudson8@users.sourceforge.net">Joe Hudson</a> * * If anyone is looking at this page, you probably don't want to use it as an * example if you are learning how to create a plugin for yourself. I just started * learning and I know that I am doing things the incorrect way but I just wasn't able * to find out how to do them the correct way. I'll be working on the quality of this * code... and documenting. */ public class HibernateProperties extends PropertyPage { private Combo sourceLocation; private BooleanFieldEditor generationEnabled; private BooleanFieldEditor boEnabled; private Text basePackageText; private RadioGroupFieldEditor basePackageStyle; private String basePackageStyleSelection; private Label basePackageHelp; private Label basePackageNameLbl; private Group baseGroup; private Text managerPackageText; private RadioGroupFieldEditor managerPackageStyle; private String managerPackageStyleSelection; private Label managerPackageHelp; private Label managerPackageNameLbl; private BooleanFieldEditor managersEnabled; private Group managerGroup; private Label baseManagerPackageNameLbl; private RadioGroupFieldEditor baseManagerPackageStyle; private Text baseManagerPackageText; private Group baseManagerGroup; private Composite baseManagerPackageStyleSelectionParent; private String baseManagerPackageStyleSelection; private BooleanFieldEditor managerUseBasePackage; private BooleanFieldEditor baseManagerPackage; private Button baseManagerPackageSelectionButton; private BooleanFieldEditor customManager; private Composite managerRootComposite; private Text daoRootClass; private Text daoExceptionClass; private Composite customManagerComposite; private Button basePackageSelectionButton; private Button managerPackageSelectionButton; private Table templateTable; private Table parametersTable; private Table snippetTable; private IPreferenceStore preferenceStore; private Button editButton; private Button deleteButton; private Button addButton; private Button importButton; private Button exportButton; private Button selectAllButton; private Button selectNoneButton; private Button editParameterButton; private Button deleteParameterButton; private Button addParameterButton; private Text contextObject; private Button editSnippetButton; private Button deleteSnippetButton; /** * Constructor for SamplePropertyPage. */ public HibernateProperties() { super(); } /** * @see PreferencePage#createContents(Composite) */ protected Control createContents(Composite parent) { setPreferenceStore(preferenceStore); Composite composite = new Composite(parent, SWT.NONE); composite.setLayout(new GridLayout(1, true)); composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_BOTH)); ((GridData) composite.getLayoutData()).grabExcessHorizontalSpace = true; ((GridData) composite.getLayoutData()).grabExcessVerticalSpace = true; TabFolder folder = new TabFolder(composite, SWT.NONE); GridData data = new GridData(GridData.FILL_BOTH); data.grabExcessHorizontalSpace = true; data.grabExcessVerticalSpace = true; folder.setLayoutData(data); TabItem item = new TabItem(folder, SWT.NONE); item.setText("General"); composite = createDefaultComposite(folder); item.setControl(composite); addGeneral(composite); item = new TabItem(folder, SWT.NONE); item.setText("Templates"); composite = createDefaultComposite(folder); item.setControl(composite); addTemplates(composite); item = new TabItem(folder, SWT.NONE); item.setText("Snippets"); composite = createDefaultComposite(folder); item.setControl(composite); addSnippets(composite); checkScreen(); return parent; } private void addGeneral(Composite parent) { Composite subComp = new Composite(parent, SWT.NULL); GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 2; subComp.setLayoutData(gd); generationEnabled = new BooleanFieldEditor(Constants.PROP_GENERATION_ENABLED, "I would like to have the synchronization performed automatically.", subComp); generationEnabled.setPropertyChangeListener(new IPropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { checkScreen(); } }); generationEnabled.setPreferenceStore(getLocalPreferenceStore()); generationEnabled.load(); Label label = new Label(subComp, SWT.NULL); label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); IJavaProject javaProject = (JavaProject) JavaCore.create((IProject) getElement()); List sourceRoots = new ArrayList(); try { String value = Plugin.getProperty(getElement(), Constants.PROP_SOURCE_LOCATION); IPackageFragmentRoot[] roots = javaProject.getAllPackageFragmentRoots(); for (int i = 0; i < roots.length; i++) { try { if (null != roots[i].getCorrespondingResource() && roots[i].getJavaProject().equals(javaProject) && !roots[i].isArchive()) { sourceRoots.add(roots[i].getPath().toOSString()); } } catch (JavaModelException jme) { } } if (sourceRoots.size() > 1) { Label pathLabel = new Label(parent, SWT.NONE); pathLabel.setText("Source Location"); sourceLocation = new Combo(parent, SWT.READ_ONLY); int selection = 0; for (int i = 0; i < sourceRoots.size(); i++) { sourceLocation.add(sourceRoots.get(i).toString()); if (null != value && value.equals(sourceRoots.get(i).toString())) { selection = i; } } sourceLocation.select(selection); } } catch (Exception e) { } TabFolder folder = new TabFolder(parent, SWT.NONE); gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 2; gd.grabExcessHorizontalSpace = true; folder.setLayoutData(gd); TabItem item = new TabItem(folder, SWT.NONE); item.setText("Value Objects"); Composite composite = new Composite(folder, SWT.NULL); GridLayout gl = new GridLayout(1, false); composite.setLayout(gl); gd = new GridData(); gd.grabExcessHorizontalSpace = true; composite.setLayoutData(gd); item.setControl(composite); Composite tComp = new Composite(composite, SWT.NONE); boEnabled = new BooleanFieldEditor(Constants.PROP_GENERATION_VALUE_OBJECT_ENABLED, "I would like to have value objects created for me.", tComp); boEnabled.setPropertyChangeListener(new IPropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { checkScreen(); } }); boEnabled.setPreferenceStore(getLocalPreferenceStore()); boEnabled.load(); // Path text field baseGroup = new Group(composite, SWT.NULL); baseGroup.setText("Base Package Location"); GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 1; baseGroup.setLayout(gridLayout); baseGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL)); String[][] params = new String[3][2]; params[0][0] = Constants.PROP_VALUE_RELATIVE; params[0][1] = Constants.PROP_VALUE_RELATIVE; params[1][0] = Constants.PROP_VALUE_ABSOLUTE; params[1][1] = Constants.PROP_VALUE_ABSOLUTE; params[2][0] = "Same Package"; params[2][1] = Constants.PROP_VALUE_SAME; basePackageStyle = new RadioGroupFieldEditor(Constants.PROP_BASE_VO_PACKAGE_STYLE, "", 3, params, baseGroup); basePackageStyle.setPropertyChangeListener(new IPropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { basePackageStyleSelection = event.getNewValue().toString(); checkScreen(); } }); basePackageStyle.setPreferenceStore(getLocalPreferenceStore()); basePackageStyle.load(); Composite bgc1 = new Composite(baseGroup, SWT.NONE); gridLayout = new GridLayout(); gridLayout.numColumns = 3; bgc1.setLayout(gridLayout); bgc1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL)); basePackageHelp = new Label(bgc1, SWT.NULL); gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 3; basePackageHelp.setLayoutData(gd); basePackageNameLbl = new Label(bgc1, SWT.NULL); basePackageNameLbl.setText("Package:"); basePackageText = new Text(bgc1, SWT.SINGLE | SWT.BORDER); basePackageText.setSize(50, 12); gd = new GridData( GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL); gd.widthHint = 230; basePackageText.setLayoutData(gd); String basePackageString = Plugin.getProperty(getElement(), Constants.PROP_BASE_VO_PACKAGE_NAME); if (null != basePackageString) basePackageText.setText(basePackageString); else basePackageText.setText(Constants.DEFAULT_BASE_VO_PACKAGE); basePackageSelectionButton = new Button(bgc1, SWT.NATIVE); basePackageSelectionButton.setText("Browse"); basePackageSelectionButton.addMouseListener(new MouseListener() { public void mouseDown(MouseEvent e) { try { JavaProject javaProject = (JavaProject) JavaCore.create((IProject) getElement()); IJavaSearchScope searchScope = SearchEngine.createWorkspaceScope(); SelectionDialog sd = JavaUI.createPackageDialog(getShell(), javaProject, IJavaElementSearchConstants.CONSIDER_REQUIRED_PROJECTS); sd.open(); Object[] objects = sd.getResult(); if (null != objects && objects.length > 0) { PackageFragment pf = (PackageFragment) objects[0]; basePackageText.setText(pf.getElementName()); } } catch (JavaModelException jme) { jme.printStackTrace(); } } public void mouseDoubleClick(MouseEvent e) { } public void mouseUp(MouseEvent e) { } }); item = new TabItem(folder, SWT.NONE); item.setText("Data Access Objects"); composite = new Composite(folder, SWT.NULL); gl = new GridLayout(1, false); composite.setLayout(gl); gd = new GridData(GridData.FILL_HORIZONTAL); gd.grabExcessHorizontalSpace = true; composite.setLayoutData(gd); item.setControl(composite); tComp = new Composite(composite, SWT.NONE); managersEnabled = new BooleanFieldEditor(Constants.PROP_GENERATION_DAO_ENABLED, "I would like to have DAOs created for me.", tComp); managersEnabled.setPropertyChangeListener(new IPropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { checkScreen(); } }); managersEnabled.setPreferenceStore(getLocalPreferenceStore()); managersEnabled.load(); new Label(parent, SWT.NULL); // Path text field managerGroup = new Group(composite, SWT.NULL); managerGroup.setText("Base Package Location"); gridLayout = new GridLayout(); gridLayout.numColumns = 1; managerGroup.setLayout(gridLayout); managerGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); params = new String[3][2]; params[0][0] = Constants.PROP_VALUE_RELATIVE; params[0][1] = Constants.PROP_VALUE_RELATIVE; params[1][0] = Constants.PROP_VALUE_ABSOLUTE; params[1][1] = Constants.PROP_VALUE_ABSOLUTE; params[2][0] = "Same Package"; params[2][1] = Constants.PROP_VALUE_SAME; managerPackageStyle = new RadioGroupFieldEditor(Constants.PROP_DAO_PACKAGE_STYLE, "", 3, params, managerGroup); managerPackageStyle.setPropertyChangeListener(new IPropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { managerPackageStyleSelection = event.getNewValue().toString(); checkScreen(); } }); managerPackageStyle.setPreferenceStore(getLocalPreferenceStore()); managerPackageStyle.load(); bgc1 = new Composite(managerGroup, SWT.NONE); gridLayout = new GridLayout(); gridLayout.numColumns = 3; bgc1.setLayout(gridLayout); bgc1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); managerPackageHelp = new Label(bgc1, SWT.NULL); gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 3; managerPackageHelp.setLayoutData(gd); managerPackageNameLbl = new Label(bgc1, SWT.NULL); managerPackageNameLbl.setText("Package:"); managerPackageText = new Text(bgc1, SWT.SINGLE | SWT.BORDER); managerPackageText.setSize(50, 12); gd = new GridData( GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); gd.widthHint = 230; managerPackageText.setLayoutData(gd); String managerPackageString = Plugin.getProperty(getElement(), Constants.PROP_DAO_PACKAGE_NAME); if (null != managerPackageString) managerPackageText.setText(managerPackageString); else managerPackageText.setText(Constants.DEFAULT_DAO_PACKAGE); managerPackageSelectionButton = new Button(bgc1, SWT.NATIVE); managerPackageSelectionButton.setText("Browse"); managerPackageSelectionButton.addMouseListener(new MouseListener() { public void mouseDown(MouseEvent e) { try { JavaProject javaProject = (JavaProject) JavaCore.create((IProject) getElement()); IJavaSearchScope searchScope = SearchEngine.createWorkspaceScope(); SelectionDialog sd = JavaUI.createPackageDialog(getShell(), javaProject, IJavaElementSearchConstants.CONSIDER_REQUIRED_PROJECTS); sd.open(); Object[] objects = sd.getResult(); if (null != objects && objects.length > 0) { PackageFragment pf = (PackageFragment) objects[0]; managerPackageText.setText(pf.getElementName()); } } catch (JavaModelException jme) { jme.printStackTrace(); } } public void mouseDoubleClick(MouseEvent e) { } public void mouseUp(MouseEvent e) { } }); subComp = new Composite(bgc1, SWT.NULL); gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 3; subComp.setLayoutData(gd); managerUseBasePackage = new BooleanFieldEditor(Constants.PROP_BASE_DAO_USE_BASE_PACKAGE, "I would like the base DAOs in the base value object package", subComp); managerUseBasePackage.setPropertyChangeListener(new IPropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { checkScreen(); } }); managerUseBasePackage.setPreferenceStore(getLocalPreferenceStore()); managerUseBasePackage.load(); baseManagerPackageStyleSelectionParent = new Composite(bgc1, SWT.NULL); gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 3; baseManagerPackageStyleSelectionParent.setLayoutData(gd); params = new String[3][2]; params[0][0] = Constants.PROP_VALUE_RELATIVE; params[0][1] = Constants.PROP_VALUE_RELATIVE; params[1][0] = Constants.PROP_VALUE_ABSOLUTE; params[1][1] = Constants.PROP_VALUE_ABSOLUTE; params[2][0] = "DAO Package"; params[2][1] = Constants.PROP_VALUE_SAME; baseManagerPackageStyle = new RadioGroupFieldEditor(Constants.PROP_BASE_DAO_PACKAGE_STYLE, "Base DAO Location", 3, params, baseManagerPackageStyleSelectionParent); baseManagerPackageStyle.setPropertyChangeListener(new IPropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { baseManagerPackageStyleSelection = event.getNewValue().toString(); checkScreen(); } }); baseManagerPackageStyle.setPreferenceStore(getLocalPreferenceStore()); baseManagerPackageStyle.load(); baseManagerPackageNameLbl = new Label(bgc1, SWT.NULL); baseManagerPackageNameLbl.setText("Package:"); baseManagerPackageText = new Text(bgc1, SWT.SINGLE | SWT.BORDER); baseManagerPackageText.setSize(50, 12); gd = new GridData( GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); gd.widthHint = 230; baseManagerPackageText.setLayoutData(gd); String baseManagerPackageString = Plugin.getProperty(getElement(), Constants.PROP_BASE_DAO_PACKAGE_NAME); if (null != baseManagerPackageString) baseManagerPackageText.setText(baseManagerPackageString); else baseManagerPackageText.setText(Constants.DEFAULT_BASE_DAO_PACKAGE); baseManagerPackageSelectionButton = new Button(bgc1, SWT.NATIVE); baseManagerPackageSelectionButton.setText("Browse"); baseManagerPackageSelectionButton.addMouseListener(new MouseListener() { public void mouseDown(MouseEvent e) { try { JavaProject javaProject = (JavaProject) JavaCore.create((IProject) getElement()); IJavaSearchScope searchScope = SearchEngine.createWorkspaceScope(); SelectionDialog sd = JavaUI.createPackageDialog(getShell(), javaProject, IJavaElementSearchConstants.CONSIDER_REQUIRED_PROJECTS); sd.open(); Object[] objects = sd.getResult(); if (null != objects && objects.length > 0) { PackageFragment pf = (PackageFragment) objects[0]; baseManagerPackageText.setText(pf.getElementName()); } } catch (JavaModelException jme) { jme.printStackTrace(); } } public void mouseDoubleClick(MouseEvent e) { } public void mouseUp(MouseEvent e) { } }); customManagerComposite = new Composite(composite, SWT.NONE); customManager = new BooleanFieldEditor(Constants.PROP_USE_CUSTOM_ROOT_DAO, "I would like to use a custom DAO root.", customManagerComposite); customManager.setPropertyChangeListener(new IPropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { checkScreen(); } }); customManager.setPreferenceStore(getLocalPreferenceStore()); customManager.load(); managerRootComposite = new Composite(composite, SWT.NONE); managerRootComposite.setLayout(new GridLayout(3, false)); ((GridLayout) managerRootComposite.getLayout()).horizontalSpacing = 9; gd = new GridData(GridData.FILL_HORIZONTAL); ; gd.grabExcessHorizontalSpace = true; managerRootComposite.setLayoutData(gd); Label lbl = new Label(managerRootComposite, SWT.NONE); lbl.setText("DAO Class:"); daoRootClass = new Text(managerRootComposite, SWT.SINGLE | SWT.BORDER); String managerRootClassStr = Plugin.getProperty(getElement(), Constants.PROP_CUSTOM_ROOT_DAO_CLASS); if (null != managerRootClassStr) daoRootClass.setText(managerRootClassStr); gd = new GridData(GridData.FILL_HORIZONTAL); gd.grabExcessHorizontalSpace = true; daoRootClass.setLayoutData(gd); Button managerRootButton = new Button(managerRootComposite, SWT.NATIVE); managerRootButton.setText("Browse"); managerRootButton.addMouseListener(new MouseListener() { public void mouseDown(MouseEvent e) { try { JavaProject javaProject = (JavaProject) JavaCore.create((IProject) getElement()); IJavaSearchScope searchScope = SearchEngine.createWorkspaceScope(); SelectionDialog sd = JavaUI.createTypeDialog(getShell(), new ApplicationWindow(getShell()), searchScope, IJavaElementSearchConstants.CONSIDER_CLASSES, false); sd.open(); Object[] objects = sd.getResult(); if (null != objects && objects.length > 0) { IType type = (IType) objects[0]; daoRootClass.setText(type.getFullyQualifiedName()); } } catch (JavaModelException jme) { jme.printStackTrace(); } } public void mouseDoubleClick(MouseEvent e) { } public void mouseUp(MouseEvent e) { } }); lbl = new Label(managerRootComposite, SWT.NONE); lbl.setText("DAO Exception:"); daoExceptionClass = new Text(managerRootComposite, SWT.SINGLE | SWT.BORDER); String daoExceptionClassStr = Plugin.getProperty(getElement(), Constants.PROP_BASE_DAO_EXCEPTION); if (null != daoExceptionClassStr) daoExceptionClass.setText(daoExceptionClassStr); else daoExceptionClass.setText("org.hibernate.HibernateException"); gd = new GridData(GridData.FILL_HORIZONTAL); gd.grabExcessHorizontalSpace = true; daoExceptionClass.setLayoutData(gd); Button daoExceptionButton = new Button(managerRootComposite, SWT.NATIVE); daoExceptionButton.setText("Browse"); daoExceptionButton.addMouseListener(new MouseListener() { public void mouseDown(MouseEvent e) { try { JavaProject javaProject = (JavaProject) JavaCore.create((IProject) getElement()); IJavaSearchScope searchScope = SearchEngine.createWorkspaceScope(); SelectionDialog sd = JavaUI.createTypeDialog(getShell(), new ApplicationWindow(getShell()), searchScope, IJavaElementSearchConstants.CONSIDER_CLASSES, false); sd.open(); Object[] objects = sd.getResult(); if (null != objects && objects.length > 0) { IType type = (IType) objects[0]; daoExceptionClass.setText(type.getFullyQualifiedName()); } } catch (JavaModelException jme) { jme.printStackTrace(); } } public void mouseDoubleClick(MouseEvent e) { } public void mouseUp(MouseEvent e) { } }); } private void addTemplates(Composite parent) { Composite tComp = new Composite(parent, SWT.NULL); GridLayout gl = new GridLayout(1, false); gl.horizontalSpacing = 0; gl.verticalSpacing = 0; tComp.setLayout(gl); GridData gd = new GridData(GridData.FILL_BOTH); gd.grabExcessHorizontalSpace = true; gd.grabExcessVerticalSpace = true; tComp.setLayoutData(gd); Composite composite = new Composite(tComp, SWT.NULL); gl = new GridLayout(2, false); composite.setLayout(gl); gd = new GridData(GridData.FILL_BOTH); gd.grabExcessHorizontalSpace = true; gd.grabExcessVerticalSpace = true; composite.setLayoutData(gd); templateTable = new Table(composite, SWT.BORDER | SWT.H_SCROLL | SWT.CHECK | SWT.FULL_SELECTION); templateTable.setVisible(true); templateTable.setLinesVisible(false); templateTable.setHeaderVisible(true); templateTable.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { int rowsChecked = 0; for (int i = 0; i < templateTable.getItemCount(); i++) { if (templateTable.getItem(i).getChecked()) rowsChecked++; } if (rowsChecked > 0) { exportButton.setEnabled(true); deleteButton.setEnabled(true); } else { exportButton.setEnabled(false); deleteButton.setEnabled(false); } if (templateTable.getSelectionIndex() >= 0) { editButton.setEnabled(true); deleteButton.setEnabled(true); } } public void widgetDefaultSelected(SelectionEvent e) { } }); templateTable.addKeyListener(new DeleteKeyListener(this, (IProject) getElement())); templateTable.addMouseListener(new TableDoubleClickListener(this)); GridData data = new GridData(GridData.FILL_BOTH); data.heightHint = 140; data.grabExcessHorizontalSpace = true; data.grabExcessVerticalSpace = true; templateTable.setLayoutData(data); // create the columns TableColumn templateColumn = new TableColumn(templateTable, SWT.LEFT); TableColumn nameColumn = new TableColumn(templateTable, SWT.LEFT); TableColumn typeColumn = new TableColumn(templateTable, SWT.LEFT); templateColumn.setText("Template"); nameColumn.setText("Name"); ColumnLayoutData templateColumnLayout = new ColumnWeightData(50, false); ColumnLayoutData nameColumnLayout = new ColumnWeightData(50, false); // set columns in Table layout TableLayout tableLayout = new TableLayout(); tableLayout.addColumnData(templateColumnLayout); tableLayout.addColumnData(nameColumnLayout); templateTable.setLayout(tableLayout); Composite buttonComposite = new Composite(composite, SWT.NULL); GridLayout fl = new GridLayout(1, false); fl.verticalSpacing = 2; buttonComposite.setLayout(fl); data = new GridData(); data.horizontalAlignment = GridData.BEGINNING; data.verticalAlignment = GridData.BEGINNING; buttonComposite.setLayoutData(data); importButton = new Button(buttonComposite, SWT.NATIVE); importButton.setText("Import"); importButton.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { FileDialog fd = new FileDialog(getShell()); fd.setFilterExtensions(new String[] { "*.zip" }); String fileName = fd.open(); if (null != fileName) { try { IProject project = (IProject) getElement(); long uniqueId = System.currentTimeMillis(); ZipFile zipFile = new ZipFile(new File(fileName), ZipFile.OPEN_READ); for (Enumeration enumeration = zipFile.entries(); enumeration.hasMoreElements();) { ZipEntry entry = (ZipEntry) enumeration.nextElement(); String currentEntry = entry.getName(); if (currentEntry.endsWith(".pt")) { BufferedInputStream is = new BufferedInputStream(zipFile.getInputStream(entry)); TemplateLocation templateLocation = new TemplateLocation(is, project); if (null != templateLocation.getTemplate()) { ResourceManager.getInstance(project).addTemplateLocation(templateLocation); } } } reloadTemplates(); } catch (Exception exc) { HSUtil.showError(exc.getMessage(), getShell()); } } } public void widgetDefaultSelected(SelectionEvent e) { } }); exportButton = new Button(buttonComposite, SWT.NATIVE); exportButton.setText("Export"); exportButton.setEnabled(false); exportButton.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { FileDialog fd = new FileDialog(getShell()); fd.setFilterExtensions(new String[] { "*.zip" }); String fileName = fd.open(); if (null != fileName && fileName.trim().length() > 0) { fileName = fileName.trim(); if (fileName.indexOf(".") < 0) fileName = fileName + ".zip"; try { IProject project = (IProject) getElement(); long uniqueId = System.currentTimeMillis(); List projectTemplates = new ArrayList(); for (int i = 0; i < templateTable.getItemCount(); i++) { if (templateTable.getItem(i).getChecked()) { TemplateLocation templateLocation = (TemplateLocation) ResourceManager .getInstance(project).getTemplateLocations().get(i); projectTemplates.add(templateLocation); templateTable.getItem(i).setChecked(false); } } exportButton.setEnabled(false); ZipOutputStream zos = null; try { zos = new ZipOutputStream(new FileOutputStream(new File(fileName))); for (Iterator i = projectTemplates.iterator(); i.hasNext();) { TemplateLocation templateLocation = (TemplateLocation) i.next(); ZipEntry entry = new ZipEntry(uniqueId++ + ".pt"); zos.putNextEntry(entry); zos.write(templateLocation.toString().getBytes()); zos.closeEntry(); } } finally { if (null != zos) zos.close(); } MessageDialog.openInformation(getShell(), "Export Complete", projectTemplates.size() + " project templates sucessfully exported to " + fileName + "."); } catch (Exception exc) { HSUtil.showError(exc.getMessage(), getShell()); } } } public void widgetDefaultSelected(SelectionEvent e) { } }); new Label(buttonComposite, SWT.NULL); selectAllButton = new Button(buttonComposite, SWT.NATIVE); selectAllButton.setText("Select All"); selectAllButton.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { TableItem[] items = templateTable.getItems(); for (int i = 0; i < items.length; i++) { items[i].setChecked(true); } if (items.length > 0) { deleteButton.setEnabled(true); } } public void widgetDefaultSelected(SelectionEvent e) { } }); selectNoneButton = new Button(buttonComposite, SWT.NATIVE); selectNoneButton.setText("Deselect All"); selectNoneButton.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { TableItem[] items = templateTable.getItems(); for (int i = 0; i < items.length; i++) { items[i].setChecked(false); } if (templateTable.getSelection().length == 0) { deleteButton.setEnabled(false); } } public void widgetDefaultSelected(SelectionEvent e) { } }); buttonComposite = new Composite(tComp, SWT.NULL); fl = new GridLayout(3, false); fl.marginWidth = 5; fl.horizontalSpacing = 2; buttonComposite.setLayout(fl); data = new GridData(); data.horizontalAlignment = GridData.BEGINNING; data.verticalAlignment = GridData.BEGINNING; data.horizontalSpan = 2; buttonComposite.setLayoutData(data); addButton = new Button(buttonComposite, SWT.NATIVE); addButton.setText("New"); addButton.setVisible(true); addButton.addSelectionListener(new AddButtonListener(this, ((IProject) getElement()))); editButton = new Button(buttonComposite, SWT.NATIVE); editButton.setText("Edit"); editButton.addSelectionListener(new EditButtonListener(this)); deleteButton = new Button(buttonComposite, SWT.NATIVE); deleteButton.setText("Delete"); deleteButton.addSelectionListener(new DeleteButtonListener(this, ((IProject) getElement()))); reloadTemplates(); composite = new Composite(tComp, SWT.NONE); composite.setLayout(new GridLayout(1, false)); gd = new GridData(GridData.FILL_BOTH); gd.grabExcessHorizontalSpace = true; gd.grabExcessVerticalSpace = true; composite.setLayoutData(gd); Label label = new Label(composite, SWT.NULL); gd = new GridData(GridData.FILL_HORIZONTAL); gd.grabExcessHorizontalSpace = true; gd.horizontalSpan = 2; label.setLayoutData(gd); label.setText("Context Parameters"); parametersTable = new Table(composite, SWT.BORDER | SWT.H_SCROLL | SWT.FULL_SELECTION); parametersTable.setVisible(true); parametersTable.setLinesVisible(false); parametersTable.setHeaderVisible(true); parametersTable.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { editParameterButton.setEnabled(true); deleteParameterButton.setEnabled(true); } public void widgetDefaultSelected(SelectionEvent e) { } }); parametersTable.addKeyListener(new ParameterDeleteKeyListener(this, (IProject) getElement())); parametersTable.addMouseListener(new ParameterDoubleClickListener(this)); // create the columns TableColumn keyColumn = new TableColumn(parametersTable, SWT.LEFT); TableColumn valueColumn = new TableColumn(parametersTable, SWT.LEFT); keyColumn.setText("Name"); valueColumn.setText("Value"); ColumnLayoutData keyColumnLayout = new ColumnWeightData(35, false); ColumnLayoutData valueColumnLayout = new ColumnWeightData(65, false); // set columns in Table layout tableLayout = new TableLayout(); tableLayout.addColumnData(keyColumnLayout); tableLayout.addColumnData(valueColumnLayout); parametersTable.setLayout(tableLayout); data = new GridData(GridData.FILL_BOTH); data.heightHint = 50; data.grabExcessHorizontalSpace = true; data.grabExcessVerticalSpace = true; parametersTable.setLayoutData(data); buttonComposite = new Composite(composite, SWT.NONE); data = new GridData(); data.horizontalAlignment = GridData.BEGINNING; data.verticalAlignment = GridData.BEGINNING; buttonComposite.setLayoutData(data); fl = new GridLayout(3, false); fl.horizontalSpacing = 2; buttonComposite.setLayout(fl); buttonComposite.setVisible(true); addParameterButton = new Button(buttonComposite, SWT.NATIVE); addParameterButton.setText("New"); addParameterButton.setVisible(true); addParameterButton.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL)); addParameterButton.addSelectionListener(new AddParameterButtonListener(this, (IProject) getElement())); editParameterButton = new Button(buttonComposite, SWT.NATIVE); editParameterButton.setText("Edit"); editParameterButton.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL)); editParameterButton.addSelectionListener(new EditParameterButtonListener(this, (IProject) getElement())); deleteParameterButton = new Button(buttonComposite, SWT.NATIVE); deleteParameterButton.setText("Delete"); deleteParameterButton.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL)); deleteParameterButton .addSelectionListener(new DeleteParameterButtonListener(this, ((IProject) getElement()))); reloadTemplateParameters(); Composite subComp = new Composite(tComp, SWT.NULL); gd = new GridData(GridData.FILL_HORIZONTAL); gd.grabExcessHorizontalSpace = true; subComp.setLayoutData(gd); subComp.setLayout(new GridLayout(4, false)); label = new Label(subComp, SWT.NONE); label.setText("Context Object"); contextObject = new Text(subComp, SWT.BORDER); contextObject.setEnabled(false); contextObject.setBackground(new Color(null, 255, 255, 255)); gd = new GridData(GridData.FILL_HORIZONTAL); gd.widthHint = 200; gd.grabExcessHorizontalSpace = true; contextObject.setLayoutData(gd); String contextObjString = Plugin.getProperty(getElement(), Constants.PROP_CONTEXT_OBJECT); if (null != contextObjString) contextObject.setText(contextObjString); Button contextObjectButton = new Button(subComp, SWT.NATIVE); contextObjectButton.setText("Browse"); contextObjectButton.addMouseListener(new MouseListener() { public void mouseDown(MouseEvent e) { try { JavaProject javaProject = (JavaProject) JavaCore.create((IProject) getElement()); IJavaSearchScope searchScope = SearchEngine.createWorkspaceScope(); SelectionDialog sd = JavaUI.createTypeDialog(getShell(), new ApplicationWindow(getShell()), searchScope, IJavaElementSearchConstants.CONSIDER_CLASSES, false); sd.open(); Object[] objects = sd.getResult(); if (null != objects && objects.length > 0) { IType type = (IType) objects[0]; contextObject.setText(type.getFullyQualifiedName()); } } catch (JavaModelException jme) { jme.printStackTrace(); } } public void mouseDoubleClick(MouseEvent e) { } public void mouseUp(MouseEvent e) { } }); Button clearButton = new Button(subComp, SWT.NATIVE); clearButton.setText("Clear"); clearButton.addMouseListener(new MouseListener() { public void mouseDown(MouseEvent e) { contextObject.setText(""); } public void mouseDoubleClick(MouseEvent e) { } public void mouseUp(MouseEvent e) { } }); label = new Label(subComp, SWT.NONE); label.setText("Tip: You can reference this object in your templates as ${obj}"); gd = new GridData(); gd.horizontalSpan = 2; gd.grabExcessHorizontalSpace = true; label.setLayoutData(gd); } private void addSnippets(Composite parent) { Composite composite = new Composite(parent, SWT.NULL); composite.setLayout(new GridLayout(1, false)); GridData gd = new GridData(GridData.FILL_BOTH); composite.setLayoutData(gd); snippetTable = new Table(composite, SWT.BORDER | SWT.H_SCROLL | SWT.FULL_SELECTION); snippetTable.setVisible(true); snippetTable.setLinesVisible(false); snippetTable.setHeaderVisible(false); snippetTable.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { if (snippetTable.getSelectionIndex() >= 0) { editSnippetButton.setEnabled(true); deleteSnippetButton.setEnabled(true); } } public void widgetDefaultSelected(SelectionEvent e) { } }); snippetTable .addMouseListener(new SnippetTableDoubleClickListener(this, (IProject) getElement(), getShell())); snippetTable.addKeyListener(new DeleteSnippetKeyListener(this, (IProject) getElement(), getShell())); GridData data = new GridData(GridData.FILL_BOTH); data.heightHint = 280; data.widthHint = 350; data.grabExcessHorizontalSpace = true; data.grabExcessVerticalSpace = true; snippetTable.setLayoutData(data); // create the columns // TableColumn nameColumn = new TableColumn(snippetTable, SWT.LEFT); // nameColumn.setText("Name"); // ColumnWeightData nameColumnLayout = new ColumnWeightData(40, false); // TableColumn descColumn = new TableColumn(snippetTable, SWT.LEFT); // descColumn.setText("Description"); // ColumnWeightData descColumnLayout = new ColumnWeightData(60, false); // set columns in Table layout // TableLayout tableLayout = new TableLayout(); // tableLayout.addColumnData(nameColumnLayout); // tableLayout.addColumnData(descColumnLayout); // snippetTable.setLayout(tableLayout); // snippetTable.layout(); Composite buttonComposite = new Composite(composite, SWT.NULL); data = new GridData(); data.horizontalAlignment = GridData.BEGINNING; data.verticalAlignment = GridData.BEGINNING; buttonComposite.setLayoutData(data); GridLayout fl = new GridLayout(3, false); fl.horizontalSpacing = 2; buttonComposite.setLayout(fl); Button button = new Button(buttonComposite, SWT.NATIVE); button.setText("New"); button.addSelectionListener(new AddSnippetListener(this, (IProject) getElement(), getShell())); editSnippetButton = new Button(buttonComposite, SWT.NATIVE); editSnippetButton.setText("Edit"); editSnippetButton .addSelectionListener(new EditSnippetButtonListener(this, (IProject) getElement(), getShell())); deleteSnippetButton = new Button(buttonComposite, SWT.NATIVE); deleteSnippetButton.setText("Delete"); deleteSnippetButton .addSelectionListener(new DeleteSnippetButtonListener(this, (IProject) getElement(), getShell())); reloadSnippets(); } public class AddSnippetListener implements SelectionListener { private HibernateProperties props; private IProject project; private Shell shell; public AddSnippetListener(HibernateProperties props, IProject project, Shell shell) { this.props = props; this.project = project; this.shell = shell; } public void widgetSelected(SelectionEvent e) { AddProjectSnippet aps = new AddProjectSnippet(shell, props, project); aps.open(); } public void widgetDefaultSelected(SelectionEvent e) { } } public class EditSnippetButtonListener implements SelectionListener { private HibernateProperties props; private IProject project; private Shell shell; public EditSnippetButtonListener(HibernateProperties props, IProject project, Shell shell) { this.props = props; this.project = project; this.shell = shell; } public void widgetSelected(SelectionEvent e) { int index = snippetTable.getSelectionIndex(); Snippet snippet = (Snippet) ResourceManager.getInstance(project).getProjectSnippets().get(index); EditorUtil.openPage(snippet, shell); MessageDialog.openInformation(shell, UIUtil.getResourceTitle("ResourceModification"), UIUtil.getResourceText("ResourceInEditor")); } public void widgetDefaultSelected(SelectionEvent e) { } } public class SnippetTableDoubleClickListener implements MouseListener { private HibernateProperties props; private IProject project; private Shell shell; public SnippetTableDoubleClickListener(HibernateProperties props, IProject project, Shell shell) { this.props = props; this.project = project; this.shell = shell; } public void mouseDoubleClick(MouseEvent e) { int index = snippetTable.getSelectionIndex(); Snippet snippet = (Snippet) ResourceManager.getInstance(project).getProjectSnippets().get(index); EditorUtil.openPage(snippet, shell); MessageDialog.openInformation(shell, UIUtil.getResourceTitle("ResourceModification"), UIUtil.getResourceText("ResourceInEditor")); } public void mouseDown(MouseEvent e) { }; public void mouseUp(MouseEvent e) { }; } public class DeleteSnippetButtonListener implements SelectionListener { private HibernateProperties props; private IProject project; private Shell shell; public DeleteSnippetButtonListener(HibernateProperties props, IProject project, Shell shell) { this.props = props; this.project = project; this.shell = shell; } public void widgetSelected(SelectionEvent e) { try { if (MessageDialog.openConfirm(shell, "Delete Confirmation", "Are you sure you want to delete this snippet?")) { int index = snippetTable.getSelectionIndex(); Snippet snippet = (Snippet) ResourceManager.getInstance(project).getProjectSnippets() .get(index); ResourceManager.getInstance(project).delete(snippet); reloadSnippets(); } } catch (Exception e1) { Plugin.log(e1); } } public void widgetDefaultSelected(SelectionEvent e) { } } public class DeleteSnippetKeyListener implements KeyListener { private HibernateProperties props; private IProject project; private Shell shell; public DeleteSnippetKeyListener(HibernateProperties props, IProject project, Shell shell) { this.props = props; this.project = project; this.shell = shell; } public void keyPressed(KeyEvent e) { if (e.keyCode == SWT.DEL) { try { if (MessageDialog.openConfirm(shell, "Delete Confirmation", "Are you sure you want to delete this snippet?")) { int index = snippetTable.getSelectionIndex(); Snippet snippet = (Snippet) ResourceManager.getInstance(project).getProjectSnippets() .get(index); ResourceManager.getInstance(project).delete(snippet); reloadSnippets(); } } catch (Exception e1) { Plugin.log(e1); } } } public void keyReleased(KeyEvent e) { } } public void reloadTemplateParameters() { try { parametersTable.removeAll(); IProject project = (IProject) getElement(); List templateNames = ResourceManager.getInstance(project).getTemplateParameterNames(); for (Iterator i = templateNames.iterator(); i.hasNext();) { String key = (String) i.next(); String value = ResourceManager.getInstance(project).getTemplateParameter(key); TableItem item = new TableItem(parametersTable, SWT.NULL); String[] arr = { key, value }; item.setText(arr); } editParameterButton.setEnabled(false); deleteParameterButton.setEnabled(false); } catch (Exception e) { Plugin.log(e); } parametersTable.redraw(); } public void reloadTemplates() { editButton.setEnabled(false); deleteButton.setEnabled(false); templateTable.removeAll(); try { IProject project = (IProject) getElement(); List templates = ResourceManager.getInstance(project).getTemplateLocations(); for (Iterator i = templates.iterator(); i.hasNext();) { TemplateLocation templateLocation = (TemplateLocation) i.next(); TableItem item = new TableItem(templateTable, SWT.NULL); String[] arr = { templateLocation.getTemplate().getName(), templateLocation.getName() }; item.setText(arr); } if (templates.size() > 0) { selectAllButton.setEnabled(true); selectNoneButton.setEnabled(true); } else { selectAllButton.setEnabled(false); selectNoneButton.setEnabled(false); } templates = ResourceManager.getInstance(project).getTemplates(); addButton.setEnabled(true); if (templateTable.getItemCount() == 0) { exportButton.setEnabled(false); } } catch (Exception e) { Plugin.log(e); } templateTable.redraw(); } public void reloadSnippets() { editSnippetButton.setEnabled(false); deleteSnippetButton.setEnabled(false); snippetTable.removeAll(); IProject project = (IProject) getElement(); try { List snippets = ResourceManager.getInstance(project).getProjectSnippets(); for (Iterator i = snippets.iterator(); i.hasNext();) { Snippet snippet = (Snippet) i.next(); TableItem item = new TableItem(snippetTable, SWT.NULL); String[] arr = { snippet.getName() }; item.setText(arr); } } catch (Exception e) { Plugin.log(e); } templateTable.redraw(); } private void checkScreen() { if (Constants.PROP_VALUE_ABSOLUTE.equals(basePackageStyleSelection)) { basePackageHelp.setText("Choose the fully qualified package selection for your base objects."); basePackageHelp.setVisible(true); basePackageNameLbl.setVisible(true); basePackageText.setVisible(true); basePackageSelectionButton.setVisible(true); } else if (Constants.PROP_VALUE_SAME.equals(basePackageStyleSelection)) { basePackageHelp.setVisible(false); basePackageNameLbl.setVisible(false); basePackageText.setVisible(false); basePackageSelectionButton.setVisible(false); } else { basePackageHelp.setText("Choose a package location relative to the business objects."); basePackageHelp.setVisible(true); basePackageNameLbl.setVisible(true); basePackageText.setVisible(true); basePackageSelectionButton.setVisible(false); } if (Constants.PROP_VALUE_ABSOLUTE.equals(managerPackageStyleSelection)) { managerPackageHelp.setText("Choose the fully qualified package selection for your DAOs."); managerPackageHelp.setVisible(true); managerPackageNameLbl.setVisible(true); managerPackageText.setVisible(true); managerPackageSelectionButton.setVisible(true); } else if (Constants.PROP_VALUE_SAME.equals(managerPackageStyleSelection)) { managerPackageHelp.setVisible(false); managerPackageNameLbl.setVisible(false); managerPackageText.setVisible(false); managerPackageSelectionButton.setVisible(false); } else { managerPackageHelp.setText("Choose a package location relative to the business objects."); managerPackageHelp.setVisible(true); managerPackageNameLbl.setVisible(true); managerPackageText.setVisible(true); managerPackageSelectionButton.setVisible(false); } if (managerUseBasePackage.getBooleanValue()) { // baseManagerPackageStyle.setEnabled(false, baseManagerPackageStyleSelectionParent); baseManagerPackageStyleSelectionParent.setVisible(false); baseManagerPackageNameLbl.setVisible(false); baseManagerPackageText.setVisible(false); baseManagerPackageSelectionButton.setVisible(false); } else { // baseManagerPackageStyle.setEnabled(true, baseManagerPackageStyleSelectionParent); baseManagerPackageStyleSelectionParent.setVisible(true); if (Constants.PROP_VALUE_ABSOLUTE.equals(baseManagerPackageStyleSelection)) { baseManagerPackageNameLbl.setVisible(true); baseManagerPackageText.setVisible(true); baseManagerPackageSelectionButton.setVisible(true); } else if (Constants.PROP_VALUE_SAME.equals(baseManagerPackageStyleSelection)) { baseManagerPackageNameLbl.setVisible(false); baseManagerPackageText.setVisible(false); baseManagerPackageSelectionButton.setVisible(false); } else { baseManagerPackageNameLbl.setVisible(true); baseManagerPackageText.setVisible(true); baseManagerPackageSelectionButton.setVisible(false); } } boolean enabled = boEnabled.getBooleanValue(); basePackageText.setEnabled(enabled); basePackageStyle.setEnabled(enabled, baseGroup); basePackageHelp.setEnabled(enabled); basePackageNameLbl.setEnabled(enabled); enabled = managersEnabled.getBooleanValue(); managerPackageText.setEnabled(enabled); managerPackageStyle.setEnabled(enabled, managerGroup); managerPackageHelp.setEnabled(enabled); managerPackageNameLbl.setEnabled(enabled); customManagerComposite.setVisible(enabled); managerRootComposite.setVisible(enabled); if (enabled) { boolean isCustomManager = customManager.getBooleanValue(); managerRootComposite.setVisible(isCustomManager); } } private Composite createDefaultComposite(Composite parent) { Composite composite = new Composite(parent, SWT.NULL); GridLayout layout = new GridLayout(); layout.numColumns = 2; composite.setLayout(layout); GridData data = new GridData(GridData.FILL_HORIZONTAL); data.verticalAlignment = GridData.FILL; data.horizontalAlignment = GridData.FILL; composite.setLayoutData(data); return composite; } public boolean performOk() { try { Plugin.setProperty(getElement(), Constants.PROP_GENERATION_ENABLED, new Boolean(generationEnabled.getBooleanValue()).toString()); Plugin.setProperty(getElement(), Constants.PROP_GENERATION_VALUE_OBJECT_ENABLED, new Boolean(boEnabled.getBooleanValue()).toString()); String s = basePackageText.getText(); if (null == s) s = Constants.DEFAULT_BASE_VO_PACKAGE; s = s.trim(); while (s.startsWith(".")) s = s.substring(1, s.length()); while (s.endsWith(".")) s = s.substring(0, s.length() - 1); if (s.length() == 0) s = Constants.DEFAULT_BASE_VO_PACKAGE; Plugin.setProperty(getElement(), Constants.PROP_BASE_VO_PACKAGE_NAME, s); Plugin.setProperty(getElement(), Constants.PROP_BASE_VO_PACKAGE_STYLE, basePackageStyleSelection); Plugin.setProperty(getElement(), Constants.PROP_GENERATION_DAO_ENABLED, new Boolean(managersEnabled.getBooleanValue()).toString()); s = managerPackageText.getText(); if (null == s) s = Constants.DEFAULT_DAO_PACKAGE; s = s.trim(); while (s.startsWith(".")) s = s.substring(1, s.length()); while (s.endsWith(".")) s = s.substring(0, s.length() - 1); if (s.length() == 0) s = Constants.DEFAULT_DAO_PACKAGE; Plugin.setProperty(getElement(), Constants.PROP_DAO_PACKAGE_NAME, s); Plugin.setProperty(getElement(), Constants.PROP_DAO_PACKAGE_STYLE, managerPackageStyleSelection); Plugin.setProperty(getElement(), Constants.PROP_BASE_DAO_USE_BASE_PACKAGE, new Boolean(managerUseBasePackage.getBooleanValue()).toString()); s = baseManagerPackageText.getText(); if (null == s) s = Constants.DEFAULT_BASE_DAO_PACKAGE; s = s.trim(); while (s.startsWith(".")) s = s.substring(1, s.length()); while (s.endsWith(".")) s = s.substring(0, s.length() - 1); if (s.length() == 0) s = Constants.DEFAULT_BASE_DAO_PACKAGE; Plugin.setProperty(getElement(), Constants.PROP_BASE_DAO_PACKAGE_NAME, s); Plugin.setProperty(getElement(), Constants.PROP_BASE_DAO_PACKAGE_STYLE, baseManagerPackageStyleSelection); Plugin.setProperty(getElement(), Constants.PROP_USE_CUSTOM_ROOT_DAO, new Boolean(customManager.getBooleanValue()).toString()); Plugin.setProperty(getElement(), Constants.PROP_CUSTOM_ROOT_DAO_CLASS, daoRootClass.getText()); Plugin.setProperty(getElement(), Constants.PROP_BASE_DAO_EXCEPTION, daoExceptionClass.getText()); Plugin.setProperty(getElement(), Constants.PROP_CONTEXT_OBJECT, contextObject.getText()); if (null != sourceLocation) { // System.out.println("Source Location: " + sourceLocation.getItem(sourceLocation.getSelectionIndex())); Plugin.setProperty(getElement(), Constants.PROP_SOURCE_LOCATION, sourceLocation.getItem(sourceLocation.getSelectionIndex())); } else { Plugin.clearProperty(getElement(), Constants.PROP_SOURCE_LOCATION); } } catch (Exception e) { return false; } return true; } public IPreferenceStore getLocalPreferenceStore() { if (null == preferenceStore) { preferenceStore = new PreferenceStore(); try { String s = Plugin.getProperty(getElement(), Constants.PROP_GENERATION_ENABLED); if (null == s) s = Boolean.TRUE.toString(); preferenceStore.setValue(Constants.PROP_GENERATION_ENABLED, s); s = Plugin.getProperty(getElement(), Constants.PROP_BASE_VO_PACKAGE_STYLE); if (null == s) s = Constants.PROP_VALUE_RELATIVE; preferenceStore.setValue(Constants.PROP_BASE_VO_PACKAGE_STYLE, s); basePackageStyleSelection = s; s = Plugin.getProperty(getElement(), Constants.PROP_GENERATION_VALUE_OBJECT_ENABLED); if (null == s) s = Boolean.TRUE.toString(); preferenceStore.setValue(Constants.PROP_GENERATION_VALUE_OBJECT_ENABLED, s); s = Plugin.getProperty(getElement(), Constants.PROP_DAO_PACKAGE_STYLE); if (null == s) s = Constants.PROP_VALUE_RELATIVE; preferenceStore.setValue(Constants.PROP_DAO_PACKAGE_STYLE, s); managerPackageStyleSelection = s; s = Plugin.getProperty(getElement(), Constants.PROP_GENERATION_DAO_ENABLED); if (null == s) s = Boolean.TRUE.toString(); preferenceStore.setValue(Constants.PROP_GENERATION_DAO_ENABLED, s); s = Plugin.getProperty(getElement(), Constants.PROP_BASE_DAO_USE_BASE_PACKAGE); if (null == s) s = Boolean.TRUE.toString(); preferenceStore.setValue(Constants.PROP_BASE_DAO_USE_BASE_PACKAGE, s); s = Plugin.getProperty(getElement(), Constants.PROP_BASE_DAO_PACKAGE_STYLE); if (null == s) s = Constants.PROP_VALUE_SAME; preferenceStore.setValue(Constants.PROP_BASE_DAO_PACKAGE_STYLE, s); baseManagerPackageStyleSelection = s; s = Plugin.getProperty(getElement(), Constants.PROP_USE_CUSTOM_ROOT_DAO); if (null == s) s = Boolean.FALSE.toString(); preferenceStore.setValue(Constants.PROP_USE_CUSTOM_ROOT_DAO, s); s = Plugin.getProperty(getElement(), Constants.PROP_BASE_DAO_EXCEPTION); } catch (Exception e) { } } return preferenceStore; } public class AddButtonListener implements SelectionListener { private HibernateProperties parent; private IProject project; public AddButtonListener(HibernateProperties parent, IProject project) { this.parent = parent; this.project = project; } public void widgetSelected(SelectionEvent e) { try { List templates = ResourceManager.getInstance(project).getNonRequiredTemplates(); int templateCount = 0; if (null != templates && templates.size() > 0) { for (Iterator i = templates.iterator(); i.hasNext();) { Template template = (Template) i.next(); if (null == ResourceManager.getInstance(project).getTemplateLocation(template.getName())) { templateCount++; } } if (templateCount == 0) { HSUtil.showError( "You must add more templates by clicking Window >> Preferences >> Hibernate Synchronizer | (Templates tab)", getShell()); return; } } } catch (Exception exc) { } AddTemplateLocation dialog = new AddTemplateLocation(getShell(), parent, project); dialog.open(); } public void widgetDefaultSelected(SelectionEvent e) { } } public class AddParameterButtonListener implements SelectionListener { private HibernateProperties parent; private IProject project; public AddParameterButtonListener(HibernateProperties parent, IProject project) { this.parent = parent; this.project = project; } public void widgetSelected(SelectionEvent e) { AddTemplateParameter dialog = new AddTemplateParameter(getShell(), parent, project); dialog.open(); } public void widgetDefaultSelected(SelectionEvent e) { } } public class DeleteKeyListener implements KeyListener { private HibernateProperties parent; private IProject project; public DeleteKeyListener(HibernateProperties parent, IProject project) { this.parent = parent; this.project = project; } public void keyPressed(KeyEvent e) { if (e.keyCode == SWT.DEL) { int index = templateTable.getSelectionIndex(); if (index >= 0) { try { TemplateLocation templateLocation = (TemplateLocation) ResourceManager.getInstance(project) .getTemplateLocations().get(index); boolean confirm = MessageDialog.openConfirm(parent.getShell(), "Project Template Removal Confirmation", "Are you sure you want to remove this template from your project?"); if (confirm) { ResourceManager.getInstance(project).deleteTemplateLocation(templateLocation); parent.reloadTemplates(); } } catch (Exception exc) { Plugin.log(exc); } } } } public void keyReleased(KeyEvent e) { } } public class DeleteButtonListener implements SelectionListener { private HibernateProperties parent; private IProject project; public DeleteButtonListener(HibernateProperties parent, IProject project) { this.parent = parent; this.project = project; } public void widgetSelected(SelectionEvent e) { int count = 0; TableItem[] items = templateTable.getItems(); for (int i = 0; i < items.length; i++) { if (items[i].getChecked()) count++; } if (count > 0) { boolean confirm = MessageDialog.openConfirm(parent.getShell(), "Template Removal Confirmation", "Are you sure you want to remove the " + count + " checked templates from your project?"); if (confirm) { ArrayList ttd = new ArrayList(); try { for (int i = 0; i < items.length; i++) { if (items[i].getChecked()) { TemplateLocation templateLocation = (TemplateLocation) ResourceManager .getInstance(project).getTemplateLocations().get(i); ttd.add(templateLocation); } } for (Iterator i = ttd.iterator(); i.hasNext();) { try { ResourceManager.getInstance(project) .deleteTemplateLocation((TemplateLocation) i.next()); } catch (Exception exc) { Plugin.log(exc); } } parent.reloadTemplates(); } catch (Exception exc) { MessageDialog.openError(getShell(), "An error has occured", exc.getMessage()); } } } else { int index = templateTable.getSelectionIndex(); if (index >= 0) { try { TemplateLocation templateLocation = (TemplateLocation) ResourceManager.getInstance(project) .getTemplateLocations().get(index); boolean confirm = MessageDialog.openConfirm(parent.getShell(), "Project Template Removal Confirmation", "Are you sure you want to remove this template from your project?"); if (confirm) { ResourceManager.getInstance(project).deleteTemplateLocation(templateLocation); parent.reloadTemplates(); } } catch (Exception exc) { exc.printStackTrace(); } } } } public void widgetDefaultSelected(SelectionEvent e) { } } public class DeleteParameterButtonListener implements SelectionListener { private HibernateProperties parent; private IProject project; public DeleteParameterButtonListener(HibernateProperties parent, IProject project) { this.parent = parent; this.project = project; } public void widgetSelected(SelectionEvent e) { int index = parametersTable.getSelectionIndex(); if (index >= 0) { try { boolean confirm = MessageDialog.openConfirm(parent.getShell(), "Project Template Parameter Removal Confirmation", "Are you sure you want to remove this template parameter from your project?"); if (confirm) { List parameterNames = ResourceManager.getInstance(project).getTemplateParameterNames(); String key = (String) parameterNames.get(index); ResourceManager.getInstance(project).deleteTemplateParameter(key); parent.reloadTemplateParameters(); } } catch (Exception exc) { Plugin.log(exc); } } } public void widgetDefaultSelected(SelectionEvent e) { } } public class TableDoubleClickListener implements MouseListener { private HibernateProperties parent; public TableDoubleClickListener(HibernateProperties parent) { this.parent = parent; } public void mouseDoubleClick(MouseEvent e) { try { IProject project = (IProject) getElement(); TemplateLocation templateLocation = (TemplateLocation) ResourceManager.getInstance(project) .getTemplateLocations().get(templateTable.getSelectionIndex()); EditTemplateLocation dialog = new EditTemplateLocation(getShell(), parent, ((IProject) getElement()), templateLocation); dialog.open(); } catch (Exception exc) { Plugin.log(exc); } } public void mouseDown(MouseEvent e) { } public void mouseUp(MouseEvent e) { } } public class EditButtonListener implements SelectionListener { private HibernateProperties parent; public EditButtonListener(HibernateProperties parent) { this.parent = parent; } public void widgetSelected(SelectionEvent e) { try { IProject project = (IProject) getElement(); TemplateLocation templateLocation = (TemplateLocation) ResourceManager.getInstance(project) .getTemplateLocations().get(templateTable.getSelectionIndex()); EditTemplateLocation dialog = new EditTemplateLocation(getShell(), parent, ((IProject) getElement()), templateLocation); dialog.open(); } catch (Exception exc) { Plugin.log(exc); } } public void widgetDefaultSelected(SelectionEvent e) { } } public class EditParameterButtonListener implements SelectionListener { private HibernateProperties parent; private IProject project; public EditParameterButtonListener(HibernateProperties parent, IProject project) { this.parent = parent; this.project = project; } public void widgetSelected(SelectionEvent e) { int index = parametersTable.getSelectionIndex(); if (index >= 0) { try { List parameterNames = ResourceManager.getInstance(project).getTemplateParameterNames(); String key = (String) parameterNames.get(index); EditTemplateParameter dialog = new EditTemplateParameter(getShell(), parent, (IProject) getElement(), key); } catch (Exception exc) { Plugin.log(exc); } } } public void widgetDefaultSelected(SelectionEvent e) { } } public class ParameterDeleteKeyListener implements KeyListener { private HibernateProperties parent; private IProject project; public ParameterDeleteKeyListener(HibernateProperties parent, IProject project) { this.parent = parent; this.project = project; } public void keyPressed(KeyEvent e) { if (e.keyCode == SWT.DEL) { int index = parametersTable.getSelectionIndex(); if (index >= 0) { try { boolean confirm = MessageDialog.openConfirm(parent.getShell(), "Project Template Parameter Removal Confirmation", "Are you sure you want to remove this template parameter from your project?"); if (confirm) { List parameterNames = ResourceManager.getInstance(project).getTemplateParameterNames(); String key = (String) parameterNames.get(index); ResourceManager.getInstance(project).deleteTemplateParameter(key); parent.reloadTemplateParameters(); } } catch (Exception exc) { Plugin.log(exc); } } } } public void keyReleased(KeyEvent e) { } } public class ParameterDoubleClickListener implements MouseListener { private HibernateProperties parent; public ParameterDoubleClickListener(HibernateProperties parent) { this.parent = parent; } public void mouseDoubleClick(MouseEvent e) { try { IProject project = (IProject) getElement(); int index = parametersTable.getSelectionIndex(); List parameterNames = ResourceManager.getInstance(project).getTemplateParameterNames(); String key = (String) parameterNames.get(index); EditTemplateParameter dialog = new EditTemplateParameter(getShell(), parent, (IProject) getElement(), key); dialog.open(); } catch (Exception exc) { Plugin.log(exc); } } public void mouseDown(MouseEvent e) { } public void mouseUp(MouseEvent e) { } } }