/******************************************************************************* * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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: * Exadel, Inc. and Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.jsf.ui.wizard.palette; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.jface.wizard.Wizard; import org.jboss.tools.common.model.ui.ModelUIImages; import org.jboss.tools.common.model.ui.editors.dnd.*; import org.jboss.tools.common.model.ui.editors.dnd.composite.*; import org.jboss.tools.jst.web.ui.internal.editor.jspeditor.dnd.PaletteDropCommand; import org.jboss.tools.jst.web.ui.palette.html.wizard.HTMLConstants; /** * @author erick */ public class PanelGridWizard extends Wizard implements PropertyChangeListener, IDropWizard { PaletteDropCommand fDropCommand; /** * * @param command */ public PanelGridWizard() { setWindowTitle(DropWizardMessages.Wizard_Window_Title); setDefaultPageImageDescriptor(ModelUIImages .getImageDescriptor(ModelUIImages.WIZARD_DEFAULT)); } public void setCommand(IDropCommand command) { fDropCommand = (PaletteDropCommand) command; } private PanelGridWizardPage page2 = null; /** * */ public void addPages() { super.addPages(); page2 = new PanelGridWizardPage(); ITagProposal[] proposals = TagProposalsComposite.getTagProposals( getMimeType(), getWizardModel().getDropData(), fDropCommand .getTagProposalFactory()); if (TagProposalsComposite.areThereTagProposals(getMimeType(), getWizardModel().getDropData(), fDropCommand.getTagProposalFactory())) { if (proposals.length > 1) { } } this.addPage(page2); getWizardModel().addPropertyChangeListener(this); if (proposals.length == 1) { getWizardModel().setTagProposal(proposals[0]); } getWizardModel().setElementGenerator(g); } /** * */ public boolean canFinish() { return getWizardModel().isValid(); } /** * */ public boolean performFinish() { fDropCommand.execute(); return true; } /** * */ public boolean performCancel() { return true; } /** * * @return */ public IDropWizardModel getWizardModel() { return fDropCommand.getDefaultModel(); } /** * * @return */ public String getMimeData() { return getWizardModel().getDropData().getMimeData(); } /** * * @return */ public String getMimeType() { return getWizardModel().getDropData().getMimeType(); } /** * Unexplainable update logic for wizard buttons */ public void propertyChange(PropertyChangeEvent evt) { IWizardPage[] pages = getPages(); for (int i = 0; i < pages.length; i++) { DefaultDropWizardPage page = (DefaultDropWizardPage) pages[i]; page.runValidation(); } } PanelGridElementGenerator g = new PanelGridElementGenerator(); class PanelGridElementGenerator extends DefaultElementGenerator { @Override protected void generateChildren(ElementNode node) { boolean header = page2.isOptionHeaderChecked(); boolean footer = page2.isOptionFooterChecked(); String fPrefix = getDropData().getValueProvider().getPrefix(DropURI.JSF_CORE_URI, "f"); String tagFacet = fPrefix + ":facet"; if (header == true && footer == true) { ElementNode c = node.addChild(tagFacet, ""); c.addAttribute(HTMLConstants.ATTR_NAME, "header"); if (page2.isColomns()) { // node.getChildren().add(SEPARATOR); } c = node.addChild(tagFacet, ""); c.addAttribute(HTMLConstants.ATTR_NAME, "footer"); // fDropCommand.getProperties().setProperty("new line", "false"); //$NON-NLS-1$ //$NON-NLS-2$ } if (header == true && footer == false) { ElementNode c = node.addChild(tagFacet, ""); c.addAttribute(HTMLConstants.ATTR_NAME, "header"); } if (header == false && footer == true) { if (page2.isColomns()) { if (page2.isColomns()) { // node.getChildren().add(SEPARATOR); } ElementNode c = node.addChild(tagFacet, ""); c.addAttribute(HTMLConstants.ATTR_NAME, "footer"); } else { ElementNode c = node.addChild(tagFacet, ""); c.addAttribute(HTMLConstants.ATTR_NAME, "footer"); } fDropCommand.getProperties().setProperty("new line", "false"); //$NON-NLS-1$ //$NON-NLS-2$ } } } public void dispose() { getWizardModel().removePropertyChangeListener(this); super.dispose(); } }