/******************************************************************************* * Copyright (c) 2008 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: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.smooks.configuration.editors.wizard; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.wizard.IWizard; import org.eclipse.jface.wizard.IWizardNode; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.jface.wizard.WizardSelectionPage; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator; import org.jboss.tools.smooks.configuration.editors.GraphicsConstants; /** * @author Dart Peng * @Date Jul 30, 2008 */ public class TransformDataWizardSelectionPage extends WizardSelectionPage { List<Object> registedWizard = new ArrayList<Object>(); TreeViewer viewer = null; private Label desLabel; /* * (non-Javadoc) * * @see * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets * .Composite) */ public void createControl(Composite parent) { // parent.setLayout(new FillLayout()); Composite main = new Composite(parent, SWT.NONE); GridLayout gridLayout = new GridLayout(); main.setLayout(gridLayout); Label label = new Label(main, SWT.NONE); label.setText(Messages.TransformDataWizardSelectionPage_InputTypeLabel); viewer = new TreeViewer(main, SWT.BORDER); viewer.setContentProvider(new WizardNodeContentProvider()); viewer.setLabelProvider(new WizardNodeLabelProvider()); GridData gd = new GridData(GridData.FILL_BOTH); viewer.getTree().setLayoutData(gd); createAllExtentionWizard(); Composite separatorComposite = new Composite(main,SWT.NONE); gd = new GridData(); gd.heightHint = 12; separatorComposite.setLayoutData(gd); desLabel = new Label(main, SWT.NONE); gd = new GridData(GridData.FILL_HORIZONTAL); desLabel.setLayoutData(gd); viewer.setInput(registedWizard); if (!registedWizard.isEmpty()) { this.setSelectedNode((IWizardNode) registedWizard.get(0)); } viewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); IWizardNode node = (IWizardNode) selection.getFirstElement(); desLabel.setText(""); //$NON-NLS-1$ if (node != null) { setSelectedNode(node); if (node instanceof TransformSelectWizardNode) { String des = ((TransformSelectWizardNode) node).getDescription(); desLabel.setText(des); } IStructuredDataSelectionWizard wizard = (IStructuredDataSelectionWizard) node.getWizard(); StructuredDataSelectionWizard pw = (StructuredDataSelectionWizard) getWizard(); wizard.init(pw.getSite(), pw.getInput()); } } }); viewer.addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(DoubleClickEvent event) { getContainer().showPage(getNextPage()); } }); // for (Iterator iterator = registedWizard.iterator(); // iterator.hasNext();) { // IWizardNode node = (IWizardNode) iterator.next(); // node. // } this.setControl(main); } public IWizardPage getNextPage() { if (this.getSelectedNode() == null) { return null; } boolean isCreated = getSelectedNode().isContentCreated(); IWizard wizard = getSelectedNode().getWizard(); if (wizard == null) { setSelectedNode(null); return null; } if (!isCreated) { wizard.addPages(); } return wizard.getStartingPage(); } protected void createAllExtentionWizard() { Collection<IViewerInitor> viewers = ViewerInitorStore.getInstance().getViewerInitorCollection(); if (viewer == null) return; for (Iterator<IViewerInitor> iterator = viewers.iterator(); iterator.hasNext();) { IViewerInitor viewerInitor = (IViewerInitor) iterator.next(); TransformSelectWizardNode wn = new TransformSelectWizardNode(); IStructuredDataSelectionWizard wizard = viewerInitor.getStructuredDataLoadWizard(); if (wizard == null) continue; wn.setWizard(wizard); wn.setName(viewerInitor.getName()); wn.setIconPath(viewerInitor.getWizardIconPath()); wn.setDescription(viewerInitor.getDescription()); this.registedWizard.add(wn); } } public TransformDataWizardSelectionPage(String pageName) { super(pageName); setDescription("Choose \"Input Data Type\" to open wizard dialog to select the input data."); //$NON-NLS-1$ setTitle("Input Data Selection"); //$NON-NLS-1$ } public void activeSelectionWizard() { } private class WizardNodeLabelProvider extends LabelProvider { private HashMap<Object, Object> map = new HashMap<Object, Object>(); @Override public Image getImage(Object element) { if (element instanceof TransformSelectWizardNode) { String path = ((TransformSelectWizardNode) element).getIconPath(); if (path != null) { Image icon = SmooksConfigurationActivator.getDefault().getImageRegistry().get(path); if (icon == null) { }else{ return icon; } } return SmooksConfigurationActivator.getDefault().getImageRegistry().get( GraphicsConstants.IMAGE_UNKNOWN_OBJ); } return super.getImage(element); } @Override public String getText(Object element) { if (element instanceof TransformSelectWizardNode) { return ((TransformSelectWizardNode) element).getName(); } return super.getText(element); } @Override public void dispose() { if(!map.values().isEmpty()){ for (Iterator<?> iterator = map.values().iterator(); iterator.hasNext();) { Image img = (Image) iterator.next(); img.dispose(); } } super.dispose(); } } private class WizardNodeContentProvider implements ITreeContentProvider { public Object[] getChildren(Object parentElement) { // TODO Auto-generated method stub return new Object[] {}; } public Object getParent(Object element) { // TODO Auto-generated method stub return null; } public boolean hasChildren(Object element) { // TODO Auto-generated method stub return false; } public Object[] getElements(Object inputElement) { if (inputElement instanceof List<?>) { return ((List<?>) inputElement).toArray(); } return new Object[] {}; } public void dispose() { // TODO Auto-generated method stub } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } } }