[jboss-cvs] jbosside/core/plugins/org.jboss.ide.eclipse.packages.ui/src/main/org/jboss/ide/eclipse/packages/ui/views ...
Marshall Culpepper
mculpepper at jboss.com
Mon Nov 6 16:36:52 EST 2006
User: mculpepper
Date: 06/11/06 16:36:52
Added: core/plugins/org.jboss.ide.eclipse.packages.ui/src/main/org/jboss/ide/eclipse/packages/ui/views
ProjectPackagesView.java
Log:
initial commit of the new "packages" tooling ui plugin
Revision Changes Path
1.1 date: 2006/11/06 21:36:52; author: mculpepper; state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.ui/src/main/org/jboss/ide/eclipse/packages/ui/views/ProjectPackagesView.java
Index: ProjectPackagesView.java
===================================================================
package org.jboss.ide.eclipse.packages.ui.views;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.GroupMarker;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.wizard.ProgressMonitorPart;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.PageBook;
import org.eclipse.ui.part.ViewPart;
import org.jboss.ide.eclipse.packages.core.model.IPackage;
import org.jboss.ide.eclipse.packages.core.model.IPackageFileSet;
import org.jboss.ide.eclipse.packages.core.model.IPackageFolder;
import org.jboss.ide.eclipse.packages.core.model.IPackageFolderWorkingCopy;
import org.jboss.ide.eclipse.packages.core.model.IPackageNode;
import org.jboss.ide.eclipse.packages.core.model.IPackagesModelListener;
import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
import org.jboss.ide.eclipse.packages.core.model.internal.PackagesModel;
import org.jboss.ide.eclipse.packages.ui.PackagesUIMessages;
import org.jboss.ide.eclipse.packages.ui.PackagesUIPlugin;
import org.jboss.ide.eclipse.packages.ui.actions.NewJARAction;
import org.jboss.ide.eclipse.packages.ui.providers.PackagesContentProvider;
import org.jboss.ide.eclipse.packages.ui.providers.PackagesLabelProvider;
import org.jboss.ide.eclipse.packages.ui.providers.PackagesContentProvider.FileSetProperty;
import org.jboss.ide.eclipse.packages.ui.wizards.FilesetWizard;
import org.jboss.ide.eclipse.ui.IProjectSelectionListener;
import org.jboss.ide.eclipse.ui.util.ProjectSelectionService;
public class ProjectPackagesView extends ViewPart implements IProjectSelectionListener, IPackagesModelListener {
private PageBook pageBook;
private Composite noProjectSelectedComposite;
private Composite loadingPackagesComposite;
private TreeViewer packageTree;
private ProgressMonitorPart loadingProgress;
private Action newJARAction, editAction, deleteAction, newFolderAction, newFilesetAction;
private Action collapseAllAction;
private GroupMarker newPackageContributions;
private MenuManager newPackageManager;
private IProject currentProject;
private boolean loading;
private PackagesContentProvider contentProvider;
public void createPartControl(Composite parent) {
ProjectSelectionService.instance().addProjectSelectionListener(this);
pageBook = new PageBook(parent, SWT.NONE);
noProjectSelectedComposite = new Composite(pageBook, SWT.NONE);
noProjectSelectedComposite.setLayout(new FillLayout());
new Label(noProjectSelectedComposite, SWT.NONE).setText(PackagesUIMessages.ProjectPackagesView_noProjectSelectedMessage);
createPackageLink = new Link(pageBook, SWT.NONE);
createPackageLink.addSelectionListener(new SelectionAdapter () {
public void widgetSelected(SelectionEvent e) {
createPackagePressed();
}
});
loadingPackagesComposite = new Composite(pageBook, SWT.NONE);
loadingPackagesComposite.setLayout(new RowLayout(SWT.HORIZONTAL));
loadingProgress = new ProgressMonitorPart(loadingPackagesComposite, null);
String message = PackagesUIMessages.ProjectPackagesView_noPackagesDefinedMessage;
message += " " + PackagesUIMessages.ProjectPackagesView_createPackage_link;
createPackageLink.setText(message);
packageTree = new TreeViewer(pageBook, SWT.NONE);
contentProvider = new PackagesContentProvider();
packageTree.setContentProvider(contentProvider);
packageTree.setLabelProvider(new PackagesLabelProvider());
pageBook.showPage(noProjectSelectedComposite);
createActions();
createToolbar();
createMenu();
createContextMenu();
getViewSite().setSelectionProvider(packageTree);
PackagesCore.addPackagesModelListener(this);
// new PackageNodeDragSource(packageTree);
// new PackageDropTarget(packageTree);
}
private ImageDescriptor platformDescriptor(String desc)
{
return PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(desc);
}
private void createActions()
{
newJARAction = new NewJARAction();
newJARAction.setEnabled(false);
newFolderAction = new Action(PackagesUIMessages.ProjectPackagesView_newFolderAction_label, platformDescriptor(ISharedImages.IMG_OBJ_FOLDER)) { //$NON-NLS-1$
public void run () {
createFolder();
}
};
newFilesetAction = new Action(PackagesUIMessages.ProjectPackagesView_newFilesetAction_label, PackagesUIPlugin.getImageDescriptor(PackagesUIPlugin.IMG_MULTIPLE_FILES)) { //$NON-NLS-1$
public void run () {
createFileset();
}
};
collapseAllAction = new Action (PackagesUIMessages.ProjectPackagesView_collapseAllAction_label, PackagesUIPlugin.getImageDescriptor(PackagesUIPlugin.IMG_COLLAPSE_ALL)) { //$NON-NLS-1$
public void run () {
packageTree.collapseAll();
}
};
collapseAllAction.setEnabled(false);
deleteAction = new Action (PackagesUIMessages.ProjectPackagesView_deletePackageAction_label, platformDescriptor(ISharedImages.IMG_TOOL_DELETE)) { //$NON-NLS-1$
public void run () {
deleteSelectedNode();
}
};
editAction = new Action (PackagesUIMessages.ProjectPackagesView_editPackageAction_label, PackagesUIPlugin.getImageDescriptor(PackagesUIPlugin.IMG_PACKAGE_EDIT)) { //$NON-NLS-1$
public void run () {
editSelectedNode();
}
};
newPackageContributions = new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS);
}
private void createToolbar ()
{
IToolBarManager manager = getViewSite().getActionBars().getToolBarManager();
manager.add(newJARAction);
manager.add(new Separator());
manager.add(collapseAllAction);
}
private void createMenu ()
{
newPackageManager = new MenuManager(PackagesUIMessages.ProjectPackagesView_newPackageMenu_label, NEW_PACKAGE_MENU_ID);
newPackageManager.add(newJARAction);
newPackageManager.add(new Separator());
newPackageManager.add(newPackageContributions);
IMenuManager manager = getViewSite().getActionBars().getMenuManager();
manager.add(newPackageManager);
}
public static final String NEW_PACKAGE_MENU_ID = "org.jboss.ide.eclipse.packages.ui.newPackageMenu";
private Link createPackageLink;
private void createContextMenu ()
{
getViewSite().registerContextMenu(NEW_PACKAGE_MENU_ID, newPackageManager, packageTree);
MenuManager manager = new MenuManager("#PopupMenu"); //$NON-NLS-1$
manager.setRemoveAllWhenShown(true);
manager.addMenuListener(new IMenuListener () {
public void menuAboutToShow(IMenuManager manager) {
IStructuredSelection selection = (IStructuredSelection) packageTree.getSelection();
if (selection != null && !selection.isEmpty())
{
if (!(selection.getFirstElement() instanceof IPackageNode)) return;
IPackageNode node = (IPackageNode) selection.getFirstElement();
if (node.getNodeType() == IPackageNode.TYPE_PACKAGE
|| node.getNodeType() == IPackageNode.TYPE_PACKAGE_FOLDER)
{
newJARAction.setEnabled(true);
manager.add(newPackageManager);
manager.add(newFolderAction);
manager.add(newFilesetAction);
manager.add(new Separator());
}
if (node.getNodeType() == IPackageNode.TYPE_PACKAGE)
{
editAction.setText(PackagesUIMessages.ProjectPackagesView_editPackageAction_label); //$NON-NLS-1$
deleteAction.setText(PackagesUIMessages.ProjectPackagesView_deletePackageAction_label); //$NON-NLS-1$
editAction.setImageDescriptor(PackagesUIPlugin.getImageDescriptor(PackagesUIPlugin.IMG_PACKAGE_EDIT));
}
else if (node.getNodeType() == IPackageNode.TYPE_PACKAGE_FOLDER)
{
editAction.setText(PackagesUIMessages.ProjectPackagesView_editFolderAction_label); //$NON-NLS-1$
deleteAction.setText(PackagesUIMessages.ProjectPackagesView_deleteFolderAction_label); //$NON-NLS-1$
editAction.setImageDescriptor(platformDescriptor(ISharedImages.IMG_OBJ_FOLDER));
}
else if (node.getNodeType() == IPackageNode.TYPE_PACKAGE_FILESET)
{
editAction.setText(PackagesUIMessages.ProjectPackagesView_editFilesetAction_label); //$NON-NLS-1$
deleteAction.setText(PackagesUIMessages.ProjectPackagesView_deleteFilesetAction_label); //$NON-NLS-1$
editAction.setImageDescriptor(PackagesUIPlugin.getImageDescriptor(PackagesUIPlugin.IMG_MULTIPLE_FILES));
}
manager.add(editAction);
manager.add(deleteAction);
}
}
});
Menu contextMenu = manager.createContextMenu(packageTree.getTree());
packageTree.getTree().setMenu(contextMenu);
}
public void projectSelected(final IProject project)
{
if (project != null && project.equals(currentProject)) return;
currentProject = project;
if (PackagesCore.projectHasPackages(project))
{
pageBook.showPage(loadingPackagesComposite);
getSite().getShell().getDisplay().asyncExec(new Runnable () {
public void run ()
{
loading = true;
IPackage packages[] = PackagesCore.getProjectPackages(project, loadingProgress);
if (packages == null) {
pageBook.showPage(createPackageLink);
}
else {
pageBook.showPage(packageTree.getTree());
if (packageTree.getInput() != packages)
{
packageTree.setInput(packages);
}
collapseAllAction.setEnabled(true);
}
loading = false;
}
});
}
else {
pageBook.showPage(createPackageLink);
collapseAllAction.setEnabled(false);
}
newJARAction.setEnabled(true);
}
private void createPackagePressed ()
{
newJARAction.run();
}
private void createFolder ()
{
InputDialog dialog = new InputDialog(getSite().getShell(),
PackagesUIMessages.ProjectPackagesView_createFolderDialog_title,
PackagesUIMessages.ProjectPackagesView_createFolderDialog_message, "", null);
int response = dialog.open();
if (response == Dialog.OK)
{
IPackageNode selected = getSelectedNode();
IPackageFolderWorkingCopy folder = PackagesCore.createPackageFolder(selected.getProject());
folder.setName(dialog.getValue());
selected.addChild(folder);
}
}
private void createFileset ()
{
IPackageNode selected = getSelectedNode();
WizardDialog dialog = new WizardDialog(getSite().getShell(), new FilesetWizard(null, selected));
dialog.open();
}
private IPackageNode getSelectedNode ()
{
IStructuredSelection selection = (IStructuredSelection) packageTree.getSelection();
if (selection != null && !selection.isEmpty())
{
Object selected = selection.getFirstElement();
if (selected instanceof IPackageNode) return (IPackageNode)selected;
else if (selected instanceof FileSetProperty) return ((FileSetProperty)selected).getFileSet();
}
return null;
}
private void editSelectedNode ()
{
IPackageNode node = getSelectedNode();
if (node != null)
{
if (node.getNodeType() == IPackageNode.TYPE_PACKAGE_FILESET)
{
IPackageFileSet fileset = (IPackageFileSet) node;
WizardDialog dialog = new WizardDialog(getSite().getShell(), new FilesetWizard(fileset, node.getParent()));
dialog.open();
}
else if (node.getNodeType() == IPackageNode.TYPE_PACKAGE_FOLDER)
{
IPackageFolder folder = (IPackageFolder) node;
InputDialog dialog = new InputDialog(getSite().getShell(),
PackagesUIMessages.ProjectPackagesView_createFolderDialog_title,
PackagesUIMessages.ProjectPackagesView_createFolderDialog_message, folder.getName(), null);
int response = dialog.open();
if (response == Dialog.OK)
{
IPackageFolderWorkingCopy wc = folder.createFolderWorkingCopy();
wc.setName(dialog.getValue());
wc.save();
}
}
}
}
private void deleteSelectedNode ()
{
IPackageNode node = getSelectedNode();
if (node != null)
{
IPackageNode parent = node.getParent();
if (parent != null)
{
parent.removeChild(node);
}
else {
// top level package
if (node.getNodeType() == IPackageNode.TYPE_PACKAGE) {
PackagesModel.instance().removePackage((IPackage)node);
}
}
}
}
public void setFocus() {
// TODO Auto-generated method stub
}
public void packageNodeAdded(IPackageNode added) {
if (!loading && !packageTree.getTree().isDisposed())
{
pageBook.showPage(packageTree.getTree());
if (added.getParent() == null) {
packageTree.setInput(PackagesCore.getProjectPackages(added.getProject(), null));
packageTree.refresh();
}
else {
// packageTree.add(added.getParent(), added);
packageTree.refresh();
packageTree.expandToLevel(added.getParent(), 1);
}
if (added.getNodeType() == IPackageNode.TYPE_PACKAGE_FILESET)
{
contentProvider.addFilesetProperties(currentProject, (IPackageFileSet)added);
}
}
}
public void packageNodeChanged(IPackageNode changed) {
if (!packageTree.getTree().isDisposed()) {
packageTree.refresh(changed);
}
}
public void packageNodeRemoved(IPackageNode removed) {
if (!packageTree.getTree().isDisposed()) {
packageTree.remove(removed);
}
packageTree.refresh();
}
}
More information about the jboss-cvs-commits
mailing list