X-Git-Url: http://secure.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/bookmark/BookmarkViewActionGroup.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/bookmark/BookmarkViewActionGroup.java index 9293770..ad120a6 100644 --- a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/bookmark/BookmarkViewActionGroup.java +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/bookmark/BookmarkViewActionGroup.java @@ -2,11 +2,11 @@ package com.quantum.view.bookmark; import java.util.Iterator; -import com.quantum.QuantumPlugin; +import com.quantum.ImageStore; +import com.quantum.Messages; import com.quantum.actions.AddToQuickListAction; import com.quantum.actions.ConnectAction; import com.quantum.actions.DeleteAllRowsAction; -import com.quantum.actions.DeleteBookmarkAction; import com.quantum.actions.DisconnectAction; import com.quantum.actions.NewBookmarkAction; import com.quantum.actions.NextSequenceAction; @@ -17,37 +17,80 @@ import com.quantum.actions.RemoveFromQuickListAction; import com.quantum.actions.ViewTableAction; import com.quantum.actions.ViewTableDetailsAction; import com.quantum.model.Bookmark; +import com.quantum.model.Entity; +import com.quantum.util.versioning.VersioningHelper; import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IMenuCreator; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.swt.events.MenuAdapter; +import org.eclipse.swt.events.MenuEvent; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.MenuItem; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.actions.ActionGroup; import org.eclipse.ui.actions.ExportResourcesAction; +import org.eclipse.ui.actions.ImportResourcesAction; import org.eclipse.ui.actions.SelectionListenerAction; import org.eclipse.ui.actions.SelectionProviderAction; import org.eclipse.ui.dialogs.PropertyDialogAction; /** - * @author BC + * This class manages the list of actions for the bookmark view. + * + * @author BC Holmes */ public class BookmarkViewActionGroup extends ActionGroup implements BookmarkClipboard { + + class SQLAction extends Action implements IMenuCreator { + public SQLAction() { + setText(Messages.getString(BookmarkViewActionGroup.class, "sqlAction.text")); + setMenuCreator(this); + } + public void dispose() { + } + public Menu getMenu(Control parent) { + return null; + } + public Menu getMenu(Menu parent) { + Menu menu = new Menu(parent); + /** + * Add listener to repopulate the menu each time + * it is shown because the list of bookmarks may have changed. + */ + menu.addMenuListener(new MenuAdapter() { + public void menuShown(MenuEvent event) { + Menu menu = (Menu) event.widget; + MenuItem[] items = menu.getItems(); + for (int i=0; i < items.length; i++) { + items[i].dispose(); + } + fillSQLMenu(menu); + } + }); + return menu; + } + } private Bookmark bookmarkClipboard; private Action newBookmarkAction; + private Action sqlAction; // bookmark node actions private SelectionListenerAction connectAction; private SelectionListenerAction disconnectAction; - private SelectionListenerAction deleteBookmarkAction; + private SelectionListenerAction deleteAction; // Query node actions private SelectionListenerAction openQueryAction; @@ -56,18 +99,21 @@ public class BookmarkViewActionGroup extends ActionGroup private SelectionListenerAction addToQuickListAction; private SelectionListenerAction removeFromQuickListAction; private SelectionListenerAction viewTableAction; - private SelectionListenerAction addSchemaAction; private SelectionListenerAction viewTableDetailsAction; private SelectionListenerAction nextSequenceAction; private SelectionListenerAction previousSequenceAction; + + private SelectionListenerAction dropAction; + // other actions private SelectionListenerAction refreshAction; private SelectionListenerAction renameAction; private ExportResourcesAction exportAction; + private ImportResourcesAction importAction; private SelectionProviderAction propertiesAction; @@ -87,7 +133,8 @@ public class BookmarkViewActionGroup extends ActionGroup // bookmark actions this.connectAction = new ConnectAction(this.viewPart); this.disconnectAction = new DisconnectAction(this.viewPart); - this.deleteBookmarkAction = new DeleteBookmarkAction(this.viewPart); + + this.sqlAction = new SQLAction(); // entity actions this.previousSequenceAction = new PrevSequenceAction(this.viewPart); @@ -100,14 +147,19 @@ public class BookmarkViewActionGroup extends ActionGroup this.openQueryAction = new OpenQueryAction(this.viewPart); this.viewTableAction = new ViewTableAction(this.viewPart); - this.addSchemaAction = new AddSchemaAction(this.viewPart); this.refreshAction = new RefreshBookmarkAction(this.viewPart); this.renameAction = new RenameAction(this.viewPart); this.copyAction = new CopyAction(this.viewPart, this, selectionProvider); this.pasteAction = new PasteAction(this.viewPart, this, selectionProvider); - this.exportAction = new ExportResourcesAction( - this.viewPart.getViewSite().getWorkbenchWindow()); - this.exportAction.setImageDescriptor(QuantumPlugin.getImageDescriptor("export.gif")); + this.deleteAction = new DeleteAction(this.viewPart, selectionProvider); + this.exportAction = VersioningHelper.createExportResourcesAction( + this.viewPart.getViewSite().getWorkbenchWindow()); + this.exportAction.setImageDescriptor(ImageStore.getImageDescriptor(ImageStore.EXPORT)); + this.importAction = VersioningHelper.createImportResourcesAction( + this.viewPart.getViewSite().getWorkbenchWindow()); + this.importAction.setImageDescriptor(ImageStore.getImageDescriptor(ImageStore.IMPORT)); + + this.dropAction = new DropEntityAction(this.viewPart); this.propertiesAction = new PropertyDialogAction( this.viewPart.getSite().getShell(), selectionProvider); @@ -115,6 +167,9 @@ public class BookmarkViewActionGroup extends ActionGroup /** + * Add all the appropriate actions to the popup menu. This method is + * called whenever someone right-clicks on an object in the bookmark view. + * * @see org.eclipse.ui.actions.ActionGroup#fillContextMenu(org.eclipse.jface.action.IMenuManager) */ public void fillContextMenu(IMenuManager menu) { @@ -134,7 +189,7 @@ public class BookmarkViewActionGroup extends ActionGroup // TODO: paste needs to change enablement whenever something is added // to the clipboard addToMenu(menu, this.pasteAction); - addToMenu(menu, this.deleteBookmarkAction); + addToMenu(menu, this.deleteAction); if (getStructuredSelection().size() == 1 && isEverySelectionInstanceof(BookmarkNode.class)) { @@ -144,18 +199,18 @@ public class BookmarkViewActionGroup extends ActionGroup menu.add(new Separator()); - // NOTE: In Eclipse 3.0.0 M6, Export is no longer a sub-class of + // NOTE: In Eclipse 3.0, Export is no longer a sub-class of // SelectionListenerAction. - this.exportAction.selectionChanged(getStructuredSelection()); - menu.add(this.exportAction); - - if (getStructuredSelection().size() == 1 && - isEverySelectionInstanceof(BookmarkNode.class)) { - - menu.add(new Separator()); - addToMenu(menu, this.addSchemaAction); + if (this.exportAction != null) { + this.exportAction.selectionChanged(getStructuredSelection()); + menu.add(this.exportAction); + } + if (this.importAction != null) { + this.importAction.selectionChanged(getStructuredSelection()); + menu.add(this.importAction); } + if (isEverySelectionInstanceof(QueryNode.class)) { if (getStructuredSelection().size() == 1) { addToMenu(menu, this.openQueryAction); @@ -180,6 +235,11 @@ public class BookmarkViewActionGroup extends ActionGroup addToMenu(menu, this.addToQuickListAction); addToMenu(menu, this.removeFromQuickListAction); + + if (getStructuredSelection().size() == 1) { + menu.add(new Separator()); + menu.add(this.sqlAction); + } } if (getStructuredSelection().size() == 1) { @@ -192,7 +252,19 @@ public class BookmarkViewActionGroup extends ActionGroup if (getStructuredSelection().size() == 1) { addToMenu(menu, this.propertiesAction); } - + } + + protected void fillSQLMenu(Menu parent) { + if (getStructuredSelection().size() > 0 && + isEverySelectionInstanceof(EntityNode.class)) { + addToMenu(parent, this.dropAction); + } + } + + private void addToMenu(Menu menu, SelectionListenerAction action) { + action.selectionChanged(getStructuredSelection()); + ActionContributionItem item = new ActionContributionItem(action); + item.fill(menu, -1); } private void addToMenu(IMenuManager menu, SelectionListenerAction action) { @@ -220,6 +292,38 @@ public class BookmarkViewActionGroup extends ActionGroup return result; } + private boolean isEverySelectedGroupOfType(String type) { + boolean result = true; + IStructuredSelection selection = getStructuredSelection(); + for (Iterator i = selection.iterator(); result && i.hasNext(); ) { + Object object = i.next(); + result &= (( object instanceof GroupNode ) && + ((GroupNode)object).getType().equals(type)); + } + + return result; + } + private boolean isEverySelectedEntityTable() { + boolean result = true; + IStructuredSelection selection = getStructuredSelection(); + for (Iterator i = selection.iterator(); result && i.hasNext(); ) { + Object object = i.next(); + result &= (( object instanceof EntityNode ) && + ((EntityNode)object).isTable()); + } + + return result; + } + private boolean isEverySelectedEntityView() { + boolean result = true; + IStructuredSelection selection = getStructuredSelection(); + for (Iterator i = selection.iterator(); result && i.hasNext(); ) { + Object object = i.next(); + result &= (( object instanceof EntityNode ) && + ((EntityNode)object).isView()); + } + return result; + } public IAction getOpenAction() { if (isEverySelectionInstanceof(BookmarkNode.class)) { @@ -246,6 +350,7 @@ public class BookmarkViewActionGroup extends ActionGroup toolBar.add(this.newBookmarkAction); actionBars.setGlobalActionHandler(IWorkbenchActionConstants.COPY, this.copyAction); + actionBars.setGlobalActionHandler(IWorkbenchActionConstants.DELETE, this.deleteAction); }