/******************************************************************************* * 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.TagProposalsComposite; import org.jboss.tools.jst.web.ui.internal.editor.jspeditor.dnd.PaletteDropCommand; import org.jboss.tools.jst.web.ui.palette.html.wizard.HTMLConstants; public class DataTableWizard extends Wizard implements PropertyChangeListener, IDropWizard { PaletteDropCommand fDropCommand; IDropWizardModel fModel; private DataTableWizardPage page2 = null; public DataTableWizard () { setWindowTitle(DropWizardMessages.Wizard_Window_Title); setDefaultPageImageDescriptor(ModelUIImages .getImageDescriptor(ModelUIImages.WIZARD_DEFAULT)); } public void addPages() { super.addPages(); page2 = new DataTableWizardPage(); page2.setProperties(fDropCommand.getProperties()); 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 void propertyChange(PropertyChangeEvent evt) { IWizardPage[] pages = getPages(); for (int i = 0; i < pages.length; i++) { DefaultDropWizardPage page = (DefaultDropWizardPage)pages[i]; page.runValidation(); } } public boolean performFinish() { fDropCommand.execute(); return true; } public void setCommand(IDropCommand command) { fDropCommand = (PaletteDropCommand)command; } public IDropWizardModel getWizardModel() { return fDropCommand.getDefaultModel(); } public boolean canFinish() { return getWizardModel().isValid(); } public String getMimeData() { return getWizardModel().getDropData().getMimeData(); } public String getMimeType() { return getWizardModel().getDropData().getMimeType(); } DataTableElementGenerator g = new DataTableElementGenerator(); class DataTableElementGenerator extends DefaultElementGenerator { @Override protected void generateChildren(ElementNode node) { String[] vs = page2.getSelectedProperties(); String value = null; if (page2.getValue().trim().length() > 0) { value = page2.getValue().trim(); if(value.startsWith("#{") //$NON-NLS-1$ || value.startsWith("${")) { //$NON-NLS-1$ value = value.substring(2); } if(value.endsWith("}")) { //$NON-NLS-1$ value = value.substring(0, value.length() - 1); } } String var = null; if (page2.getVar().length() > 0) { var = page2.getVar(); } if (var != null) { fillin(node, vs, var); } else if (value != null) { fillin(node, vs, value); } else { fillin(node, vs,""); //$NON-NLS-1$ } } private void fillin(ElementNode node, String[] vs, String val) { String hPrefix = getDropData().getValueProvider().getPrefix(DropURI.JSF_HTML_URI, "h"); String tagColumn = hPrefix + ":column"; String tagOutputText = hPrefix + ":outputText"; for (int i = 0; i < vs.length; i++){ ElementNode c = node.addChild(tagColumn); ElementNode o = c.addChild(tagOutputText); o.addAttribute(HTMLConstants.ATTR_VALUE, "#{" + val + "." + vs[i] + "}"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } } } public void dispose() { getWizardModel().removePropertyChangeListener(this); super.dispose(); } }