blob: 8972260aca942ba7a513adb23204d035fb7a1e9b [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2009 Red Hat
* All rights reserved. This program and the accompanying materials
* are 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:
* Rob Stryker - initial implementation and ongoing maintenance
******************************************************************************/
package org.eclipse.wst.common.componentcore.ui.internal.propertypage;
import java.util.List;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IWorkbench;
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
import org.eclipse.wst.common.componentcore.ui.Messages;
import org.eclipse.wst.common.componentcore.ui.internal.propertypage.DependencyPageExtensionManager.ReferenceExtension;
import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.TaskWizard;
import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.WizardFragment;
import org.eclipse.wst.common.componentcore.ui.propertypage.IReferenceWizardConstants;
public class NewReferenceWizard extends TaskWizard implements IReferenceWizardConstants {
private static final Object REFERENCE_FAMILY = new Object();
public NewReferenceWizard() {
this(null);
}
public NewReferenceWizard(ReferenceExtension[] extensions) {
super(Messages.NewReferenceWizard, new RootWizardFragment(extensions));
setFinishJobFamily(REFERENCE_FAMILY);
getRootFragment().setTaskModel(getTaskModel());
}
protected static class RootWizardFragment extends WizardFragment {
private ReferenceExtension[] extensions = null;
public RootWizardFragment() {}
public RootWizardFragment(ReferenceExtension[] extensions) {
this.extensions = extensions;
}
protected void createChildFragments(List<WizardFragment> list) {
IVirtualComponent component = (IVirtualComponent)getTaskModel().getObject(COMPONENT);
if( component == null )
list.add(new NewReferenceRootWizardFragment(extensions));
else {
WizardFragment fragment = getFirstEditingFragment(component);
if( fragment != null )
list.add(fragment);
}
if( list.size() == 0 )
setComplete(false);
}
}
public static WizardFragment getFirstEditingFragment(IVirtualComponent component) {
WizardFragment[] frags = DependencyPageExtensionManager.getManager().loadAllReferenceWizardFragments();
for( int i = 0; i < frags.length; i++ ) {
if( frags[i] instanceof IReferenceEditor ) {
if( ((IReferenceEditor)frags[i]).canEdit(component)) {
// accept first one
return frags[i];
}
}
}
return null;
}
public void init(IWorkbench newWorkbench, IStructuredSelection newSelection) {
// do nothing
}
}