X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/html/EditElementWizard.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/html/EditElementWizard.java new file mode 100644 index 0000000..2554429 --- /dev/null +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/html/EditElementWizard.java @@ -0,0 +1,121 @@ +/* + * $Id: EditElementWizard.java,v 1.3 2006-10-21 23:18:43 pombredanne Exp $ + * Copyright Narushima Hironori. All rights reserved. + */ +package net.sourceforge.phpeclipse.wizards.html; + +import net.sourceforge.phpdt.internal.ui.PHPUiImages; +import net.sourceforge.phpeclipse.PHPeclipsePlugin; + +import org.eclipse.core.resources.IFile; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.ITextSelection; +import org.eclipse.jface.wizard.IWizardPage; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IFileEditorInput; +import org.eclipse.ui.texteditor.ITextEditor; + +/** + * EditElementWizard. TODO: privides extension point element editor. pluggable + * element edit page. + */ +public class EditElementWizard extends Wizard { + + static Object[] elementEditPages = new Object[] { + // "a", AElementWizardPage.class, + // "img", ImgElementWizardPage.class, + "dl", ListElementWizardPage.class, "ul", + ListElementWizardPage.class, "ol", ListElementWizardPage.class, + "table", TableElementWizardPage.class }; + + String targetElemName; + + ITextEditor htEditor; + + EditElementWizardPage rootPage; + + /** + * Second argument specify element name, If specify null, call new element + * edit wizard page. + */ + public EditElementWizard(ITextEditor editor, String targetElemName) { + htEditor = editor; + this.targetElemName = targetElemName; + + setWindowTitle("Edit HTML Element"); + setDefaultPageImageDescriptor(PHPUiImages + .getDescriptor("wizban/editelem_wiz.gif")); + + setForcePreviousAndNextButtons(true); + } + + public void addPages() { + if (targetElemName == null) { + rootPage = new NewElementWizardPage(); + } else { + //IDocument doc = getDocument(); + rootPage = createElementEditPage(targetElemName); + rootPage.setEditType(EditElementWizardPage.MODIFY); + } + addPage(rootPage); + } + + public boolean performFinish() { + IWizardPage page = rootPage; + for (IWizardPage p; (p = page.getNextPage()) != null;) { + page = p; + } + if (page instanceof EditElementWizardPage) { + ((EditElementWizardPage) page).performFinish(); + } + return true; + } + + public IDocument getDocument() { + return htEditor.getDocumentProvider().getDocument( + htEditor.getEditorInput()); + } + + public ITextSelection getSelection() { + return (ITextSelection) htEditor.getSelectionProvider().getSelection(); + } + + public void setSelection(ITextSelection sel) { + htEditor.getSelectionProvider().setSelection(sel); + } + + public IFile getCurrentEditFile() { + IEditorInput input = htEditor.getEditorInput(); + return (input instanceof IFileEditorInput) ? ((IFileEditorInput) input) + .getFile() : null; + } + + /** + * If not edit target returns UnknownElementWizardPage. + */ + public EditElementWizardPage createElementEditPage(String elementName) { + EditElementWizardPage page = null; + try { + for (int i = 0; i < elementEditPages.length; i += 2) { + if (((String) elementEditPages[i]) + .equalsIgnoreCase(elementName)) { + Class klass = (Class) elementEditPages[i + 1]; + page = (EditElementWizardPage) klass.newInstance(); + } + } + } catch (InstantiationException e) { + PHPeclipsePlugin.log(e); + } catch (IllegalAccessException e) { + PHPeclipsePlugin.log(e); + } + if (page == null) { + page = new UnknownElementWizardPage(); + } + page.setElementName(elementName); + page.setWizard(this); + + return page; + } + +} \ No newline at end of file