/*******************************************************************************
* 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.navigator;
import org.jboss.tools.common.model.ui.navigator.*;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.widgets.*;
import org.jboss.tools.common.meta.action.*;
import org.jboss.tools.common.model.XModelFactory;
import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.common.model.ui.views.navigator.*;
public class JsfProjectsNavigator extends NavigatorViewPart {
public static String VIEW_ID = "org.jboss.tools.jsf.ui.navigator.JsfProjectsView"; //$NON-NLS-1$
private JsfProjectsContentProvider c = null;
public void createPartControl(Composite parent) {
super.createPartControl(parent);
}
public void dispose() {
super.dispose();
if (c!=null) c.dispose();
c = null;
}
protected void initLabelProvider(TreeViewer viewer) {
viewer.setLabelProvider(LabelDecoratorImpl.decorateLabelProvider(new JsfProjectsLabelProvider()));
}
protected void initContentProvider(TreeViewer viewer) {
c = new JsfProjectsContentProvider();
TreeViewerModelListenerImpl listener = new JsfProjectsTreeListener();
listener.setViewer(viewer);
c.setListener(listener);
contentProvider = c;
viewer.setContentProvider(contentProvider);
}
protected String[] getActionClasses() {
String[] actions = new String[]{
"org.jboss.tools.jsf.ui.action.CreateProjectAction", //$NON-NLS-1$
"org.jboss.tools.jsf.ui.action.ImportProjectAction" //$NON-NLS-1$
};
return actions;
}
protected TreeViewerMenuInvoker createMenuInvoker() {
return new JSFNavigatorMenuInvoker();
}
public static void main(String[] args) {
}
}
class JSFNavigatorMenuInvoker extends NavigatorMenuInvoker {
private static XModelObject jsfWorkspace;
protected XModelObject getWorkspaceObject() {
if(jsfWorkspace == null) {
jsfWorkspace = XModelFactory.getDefaultInstance().createModelObject("JSFWorkspace", null); //$NON-NLS-1$
}
return jsfWorkspace;
}
protected XActionList getActionList(XModelObject o) {
XActionList l = o.getModelEntity().getActionList();
if(o.getModelEntity().getName().equals("FileSystemFolder")) { //$NON-NLS-1$
l = getWebContextActionList(l);
} else {
l = (XActionList)l.copy(acceptor);
}
return l;
}
static XActionList webContextActionList = null;
private XActionList getWebContextActionList(XActionList l) {
if(webContextActionList == null) {
webContextActionList = (XActionList)l.copy(new FileSystemFolder());
}
return webContextActionList;
}
class FileSystemFolder implements XActionItem.Acceptor {
public boolean accepts(XActionItem item) {
if("Help".equals(item.getName())) return false; //$NON-NLS-1$
String path = item.getPath();
if(path == null) return true;
int q = path.indexOf('/');
if(q > 0) return true;
String s = "." + path + "."; //$NON-NLS-1$ //$NON-NLS-2$
return ".CreateActions.CopyActions.Properties.".indexOf(s) >= 0; //$NON-NLS-1$
}
}
AcceptorImpl acceptor = new AcceptorImpl();
static String HIDDEN_ACTIONS = ".Help.Mount.Unmount."; //$NON-NLS-1$
class AcceptorImpl implements XActionItem.Acceptor {
public boolean accepts(XActionItem item) {
if(HIDDEN_ACTIONS.indexOf("." + item.getName() + ".") >= 0) return false; //$NON-NLS-1$ //$NON-NLS-2$
return true;
}
}
}