From: <dc...@us...> - 2002-09-08 15:22:28
|
Update of /cvsroot/xmlceclipse/net.sourceforge.xmlceclipse.core/src/net/sourceforge/xmlceclipse/ui/properties In directory usw-pr-cvs1:/tmp/cvs-serv19441/src/net/sourceforge/xmlceclipse/ui/properties Added Files: Widget.java EnabledWidget.java SourceFolderList.java DomFactory.java JavaSourceFolder.java TextWidget.java PackagePrefix.java ClassNameTemplate.java ProjectPropertyPage.java Parser.java Log Message: Capabilities where deprecated, at least for a while --- NEW FILE: Widget.java --- package net.sourceforge.xmlceclipse.ui.properties; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import net.sourceforge.xmlceclipse.core.XmlcProperties; import org.eclipse.swt.widgets.Composite; /** * @author dcorbin * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ abstract class Widget { public interface ChangeListener { public void changed(); } List listeners = new ArrayList(); public void addListener(ChangeListener listener) { listeners.add(listener); } protected void changed() { for (Iterator i = listeners.iterator(); i.hasNext();) { ChangeListener listener = (ChangeListener) i.next(); listener.changed(); } } abstract void createControl(Composite parent); abstract void populate(XmlcProperties properties); abstract void setEnabled(boolean b); abstract void extract(XmlcProperties properties); abstract boolean isOk(); } --- NEW FILE: EnabledWidget.java --- package net.sourceforge.xmlceclipse.ui.properties; import net.sourceforge.xmlceclipse.core.XmlcNature; import net.sourceforge.xmlceclipse.core.XmlcProperties; import net.sourceforge.xmlceclipse.core.XmlceclipsePlugin; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; 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.widgets.Button; import org.eclipse.swt.widgets.Composite; import sun.security.krb5.internal.crypto.e; /** * @author dcorbin * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ class EnabledWidget extends Widget { IProject project; Button button; public EnabledWidget(IProject project) { this.project = project; } /** * @see net.sourceforge.xmlceclipse.ui.Widget#createControl(Composite) */ void createControl(Composite parent) { button = new Button(parent, SWT.CHECK); button.setText("Enable XML Compiler"); GridData checkboxGridData = new GridData(); checkboxGridData.horizontalSpan = 3; button.setLayoutData(checkboxGridData); button.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { throw new RuntimeException("Not yet supported"); } public void widgetSelected(SelectionEvent e) { changed(); } }); } /** * @see net.sourceforge.xmlceclipse.ui.Widget#populate(XmlcProperties) */ void populate(XmlcProperties properties) { try { button.setSelection(project.hasNature(XmlcNature.NATURE_ID)); } catch(CoreException e) { XmlceclipsePlugin.getDefault().getLog().log(e.getStatus()); } } /** * @see net.sourceforge.xmlceclipse.ui.Widget#setEnabled(boolean) */ void setEnabled(boolean b) { button.setEnabled(true); } /** * @see net.sourceforge.xmlceclipse.ui.Widget#extract(XmlcProperties) */ void extract(XmlcProperties properties) { } /** * @see net.sourceforge.xmlceclipse.ui.Widget#isOk() */ boolean isOk() { return true; } public boolean getSelection() { return button.getSelection(); } } --- NEW FILE: SourceFolderList.java --- package net.sourceforge.xmlceclipse.ui.properties; import java.util.Iterator; import net.sourceforge.xmlceclipse.core.XmlcProperties; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.jface.dialogs.IInputValidator; import org.eclipse.jface.dialogs.InputDialog; 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.Label; import org.eclipse.swt.widgets.List; /** * @author dcorbin * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ class SourceFolderList extends Widget { private Composite buttonStack; private Button newFolderButton; private Button removeFolderButton; private List srcFolderList; private Label srcDirLabel; private static int GRID_COLUMNS=3; private IProject project; public SourceFolderList(IProject project) { this.project = project; } private void createSourceList(Composite page) { srcDirLabel = new Label(page, SWT.NONE); srcDirLabel.setText("Source Directories:"); GridData labelData = new GridData(); labelData.horizontalSpan = GRID_COLUMNS; srcDirLabel.setLayoutData(labelData); srcFolderList = new List(page, SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER); srcFolderList.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { throw new RuntimeException("Not yet supported"); } public void widgetSelected(SelectionEvent e) { changed(); } }); } private Button createButton(Composite parent, String label) { Button button = new Button(parent, SWT.PUSH); button.setText(label); GridData data = new GridData(GridData.FILL_HORIZONTAL); button.setLayoutData(data); return button; } private void buildButtonStack(final Composite page) { buttonStack = new Composite(page, SWT.NONE); GridData buttonStackData = new GridData(GridData.FILL_VERTICAL); buttonStackData.verticalAlignment = GridData.BEGINNING; buttonStack.setLayoutData(buttonStackData); GridLayout buttonStackLayout = new GridLayout(1, true); buttonStack.setLayout(buttonStackLayout); buttonStackLayout.marginWidth = 0; newFolderButton = createButton(buttonStack, "Add Folder..."); newFolderButton.addSelectionListener(new SelectionAdapter() { public void widgetDefatulSelected(SelectionEvent e) { throw new RuntimeException("Not yet supported"); } public void widgetSelected(SelectionEvent e) { InputDialog dlg = new InputDialog(page.getParent().getShell(), "Add XML Compiler Source folder", "", "", new FolderValidator("Source Folder")); if (dlg.open() == dlg.OK) { srcFolderList.add(dlg.getValue()); changed(); } } }); new Label(buttonStack, SWT.NONE); removeFolderButton = createButton(buttonStack, "Remove"); removeFolderButton.addSelectionListener(new SelectionAdapter() { public void widgetDefatulSelected(SelectionEvent e) { throw new RuntimeException("Not yet supported"); } public void widgetSelected(SelectionEvent e) { int[] indices = srcFolderList.getSelectionIndices(); srcFolderList.remove(indices); changed(); } }); } public class FolderValidator implements IInputValidator { String subject = ""; public FolderValidator(String subject) { this.subject = subject; } public String isValid(String newText) { IPath path = new Path(newText); if (path.segmentCount() == 0) return null; if (path.segment(0).equals(project.getName())) { return null; } return subject + " must begin with the project name (" + project.getName() + ")"; } } /** * @see net.sourceforge.xmlceclipse.ui.Widget#createControl(Composite) */ void createControl(Composite parent) { createSourceList(parent); buildButtonStack(parent); GridData listData = new GridData(GridData.FILL_BOTH); listData.horizontalSpan = GRID_COLUMNS - 1; srcFolderList.setLayoutData(listData); } /** * @see net.sourceforge.xmlceclipse.ui.Widget#populate(XmlcProperties) */ void populate(XmlcProperties properties) { java.util.List list = properties.getSourceFolders(); for (Iterator i = list.iterator(); i.hasNext();) { String folder = (String) i.next(); srcFolderList.add(folder); } } /** * @see net.sourceforge.xmlceclipse.ui.Widget#setEnabled(boolean) */ void setEnabled(boolean b) { } /** * @see net.sourceforge.xmlceclipse.ui.Widget#extract(XmlcProperties) */ void extract(XmlcProperties properties) { String[] folders = srcFolderList.getItems(); properties.setSourceFolders(folders); } /** * @see net.sourceforge.xmlceclipse.ui.Widget#isOk() */ boolean isOk() { return srcFolderList.getItemCount() > 0; } } --- NEW FILE: DomFactory.java --- package net.sourceforge.xmlceclipse.ui.properties; import net.sourceforge.xmlceclipse.core.XmlcProperties; /** * @author dcorbin * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ class DomFactory extends TextWidget { /** * @see net.sourceforge.xmlceclipse.ui.properties.TextWidget#label() */ protected String label() { return "DOM Factory class"; } /** * @see net.sourceforge.xmlceclipse.ui.properties.Widget#populate(XmlcProperties) */ void populate(XmlcProperties properties) { text.setText(properties.getDomFactory()); } /** * @see net.sourceforge.xmlceclipse.ui.properties.Widget#extract(XmlcProperties) */ void extract(XmlcProperties properties) { properties.setDomFactory(text.getText()); } } --- NEW FILE: JavaSourceFolder.java --- package net.sourceforge.xmlceclipse.ui.properties; import net.sourceforge.xmlceclipse.core.XmlcProperties; /** * @author dcorbin * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ class JavaSourceFolder extends TextWidget { /** * @see net.sourceforge.xmlceclipse.ui.TextWidget#label() */ protected String label() { return "&Java Source Folder"; } /** * @see net.sourceforge.xmlceclipse.ui.Widget#populate(XmlcProperties) */ public void populate(XmlcProperties properties) { text.setText(properties.getJavaSourceFolder()); } /** * @see net.sourceforge.xmlceclipse.ui.Widget#extract(XmlcProperties) */ public void extract(XmlcProperties properties) { properties.setJavaSourceFolder(text.getText()); } } --- NEW FILE: TextWidget.java --- package net.sourceforge.xmlceclipse.ui.properties; import net.sourceforge.xmlceclipse.core.XmlcProperties; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; /** * @author dcorbin * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ abstract class TextWidget extends Widget { protected Label label; protected Text text; /** * @see net.sourceforge.xmlceclipse.ui.Widget#createControl(Composite) */ public void createControl(Composite parent) { createLabeledTextBox(parent,label(), true); } abstract protected String label(); /** * @see net.sourceforge.xmlceclipse.ui.Widget#setEnabled(boolean) */ public void setEnabled(boolean b) { label.setEnabled(b); text.setEnabled(b); } private Text createLabeledTextBox(Composite parent, String labelText, boolean filler) { label = new Label(parent, SWT.NONE); label.setText(labelText); text = new Text(parent, SWT.SINGLE | SWT.BORDER); GridData gridData = new GridData(GridData.FILL_HORIZONTAL); gridData.widthHint = 300; text.setLayoutData(gridData); text.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { changed(); } }); if (filler) new Label(parent, SWT.NONE); return text; } public boolean isOk() { return text.getText().length() > 0; } } --- NEW FILE: PackagePrefix.java --- package net.sourceforge.xmlceclipse.ui.properties; import net.sourceforge.xmlceclipse.core.XmlcProperties; /** * @author dcorbin * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ class PackagePrefix extends TextWidget { protected String label() { return "&Package Prefix:"; } /** * @see net.sourceforge.xmlceclipse.ui.Widget#populate(XmlcProperties) */ public void populate(XmlcProperties properties) { text.setText(properties.getPackagePrefix()); } /** * @see net.sourceforge.xmlceclipse.ui.Widget#extract(XmlcProperties) */ public void extract(XmlcProperties properties) { properties.setPackagePrefix(text.getText()); } } --- NEW FILE: ClassNameTemplate.java --- package net.sourceforge.xmlceclipse.ui.properties; import net.sourceforge.xmlceclipse.core.XmlcProperties; /** * @author dcorbin * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ public class ClassNameTemplate extends TextWidget { /** * @see net.sourceforge.xmlceclipse.ui.TextWidget#label() */ protected String label() { return "Class Name Template"; } /** * @see net.sourceforge.xmlceclipse.ui.Widget#populate(XmlcProperties) */ public void populate(XmlcProperties properties) { text.setText(properties.getClassNameTemplate()); } /** * @see net.sourceforge.xmlceclipse.ui.Widget#extract(XmlcProperties) */ public void extract(XmlcProperties properties) { properties.setClassNameTemplate(text.getText()); } } --- NEW FILE: ProjectPropertyPage.java --- /* * Copyright (c) 2002 David Corbin and others * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU General Public License v2 * which accompanies this distribution, and is available at * http://www.gnu.org/copyleft/gpl.html * * Contributors: * David Corbin - Initial implementation. */ package net.sourceforge.xmlceclipse.ui.properties; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import net.sourceforge.xmlceclipse.core.XmlcNature; import net.sourceforge.xmlceclipse.core.XmlcProperties; import net.sourceforge.xmlceclipse.core.XmlceclipsePlugin; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.dialogs.IInputValidator; import org.eclipse.jface.dialogs.InputDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; 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.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IWorkbenchPropertyPage; import org.eclipse.ui.dialogs.ContainerSelectionDialog; import org.eclipse.ui.dialogs.PropertyPage; /** * @author dcorbin * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ public class ProjectPropertyPage extends PropertyPage implements IWorkbenchPropertyPage { XmlcProperties properties; private EnabledWidget enabledWidget;; private Composite page; private Collection widgets = new ArrayList(); private boolean canLeave = false; public boolean okToLeave() { return canLeave; } private void setControlStatus() { if (!update) return; boolean enabled = enabledWidget.getSelection(); for (Iterator i = widgets.iterator(); i.hasNext();) { Widget widget = (Widget) i.next(); widget.setEnabled(enabled); } canLeave = true; if (enabled) { for (Iterator i = widgets.iterator(); canLeave && i.hasNext();) { Widget widget = (Widget) i.next(); canLeave = canLeave && widget.isOk(); } } setValid(canLeave); } private boolean update = true; /** * @see org.eclipse.jface.preference.PreferencePage#createContents(Composite) */ final static public int GRID_COLUMNS = 3; protected Control createContents(final Composite parent) { IAdaptable adaptable = getElement(); IResource resource = (IResource)adaptable.getAdapter(IResource.class); properties = XmlceclipsePlugin.getDefault().getProperties(resource); page = new Composite(parent, SWT.NONE); GridLayout pageLayout = new GridLayout(GRID_COLUMNS, false); page.setLayout(pageLayout); widgets.add( enabledWidget = new EnabledWidget(getProject())); widgets.add (new SourceFolderList(getProject())); widgets.add (new JavaSourceFolder()); widgets.add (new ClassNameTemplate()); widgets.add (new PackagePrefix()); widgets.add (new Parser()); widgets.add (new DomFactory()); for (Iterator i = widgets.iterator(); i.hasNext();) { Widget widget = (Widget) i.next(); widget.createControl(page); widget.populate(properties); } Widget.ChangeListener changeListener = new Widget.ChangeListener() { public void changed() { setControlStatus(); } }; for (Iterator i = widgets.iterator(); i.hasNext();) { Widget widget = (Widget) i.next(); widget.addListener(changeListener); } page.layout(); setControlStatus(); return page; } private IProject getProject() { return (IProject) getElement().getAdapter(IProject.class); } /** * @see org.eclipse.jface.preference.IPreferencePage#performOk() */ public boolean performOk() { try { if (enabledWidget.getSelection() != getProject().hasNature(XmlcNature.NATURE_ID)) { if (enabledWidget.getSelection()) XmlcNature.addNatureToProject(getProject()); else XmlcNature.removeNatureFromProject(getProject()); } if (enabledWidget.getSelection()) { for (Iterator i = widgets.iterator(); i.hasNext();) { Widget widget = (Widget) i.next(); widget.extract(properties); } } else { properties.setSourceFolders(null); properties.setJavaSourceFolder(null); properties.setPackagePrefix(null); properties.setClassNameTemplate(null); } XmlceclipsePlugin.getDefault().storeProperties( (IResource)getElement().getAdapter(IResource.class),properties); return super.performOk(); } catch (CoreException ce) { ErrorDialog.openError(null, "Error saving XMLC properties for project", ce.getMessage(), ce.getStatus()); return false; } } } --- NEW FILE: Parser.java --- package net.sourceforge.xmlceclipse.ui.properties; import net.sourceforge.xmlceclipse.core.XmlcProperties; /** * @author dcorbin * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ class Parser extends TextWidget { /** * @see net.sourceforge.xmlceclipse.ui.properties.TextWidget#label() */ protected String label() { return "Markup Language Parser"; } /** * @see net.sourceforge.xmlceclipse.ui.properties.Widget#populate(XmlcProperties) */ void populate(XmlcProperties properties) { text.setText(properties.getMarkupLanguageParser()); } /** * @see net.sourceforge.xmlceclipse.ui.properties.Widget#extract(XmlcProperties) */ void extract(XmlcProperties properties) { properties.setMarkupLanguageParser(text.getText()); } public boolean isOk() { if (super.isOk()) { String parser = text.getText(); return "xerces".equals(parser) || "jtidy".equals(parser) || "swing".equals(parser); } return false; } } |