Author: vyemialyanchyk
Date: 2009-07-17 10:26:08 -0400 (Fri, 17 Jul 2009)
New Revision: 16653
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/plugin.xml
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/view/OpenDiagramActionDelegate.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-4618 - fixed
Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/plugin.xml
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/plugin.xml 2009-07-17
14:07:32 UTC (rev 16652)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/plugin.xml 2009-07-17
14:26:08 UTC (rev 16653)
@@ -13,12 +13,19 @@
</extension>
<extension point="org.eclipse.ui.popupMenus">
- <objectContribution id="diagramEditorAction"
objectClass="org.hibernate.mapping.PersistentClass">
- <menu id="org.jboss.tools.hibernate.ui.view.openDiagram"
label="Open Mapping Diagram" path="diagramEditorAction"/>
+ <objectContribution id="diagramEditorAction"
objectClass="java.lang.Object">
+ <visibility>
+ <or>
+ <objectClass name="org.hibernate.cfg.Configuration"/>
+ <objectClass
name="org.hibernate.console.ConsoleConfiguration"/>
+ <objectClass name="org.hibernate.mapping.PersistentClass"/>
+ </or>
+ </visibility>
<action
id="org.jboss.tools.hibernate.ui.view.openDiagramAction"
- label="Open Mapping Diagram"
- icon="images/hibernate_small_icon.gif"
+ label="Mapping Diagram"
+ icon="images/hibernate_small_icon.gif"
+ menubarPath="group.primalEditors.last"
class="org.jboss.tools.hibernate.ui.view.OpenDiagramActionDelegate">
</action>
</objectContribution>
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/view/OpenDiagramActionDelegate.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/view/OpenDiagramActionDelegate.java 2009-07-17
14:07:32 UTC (rev 16652)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui/src/org/jboss/tools/hibernate/ui/view/OpenDiagramActionDelegate.java 2009-07-17
14:26:08 UTC (rev 16653)
@@ -26,7 +26,9 @@
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.internal.ObjectPluginAction;
+import org.hibernate.cfg.Configuration;
import org.hibernate.console.ConsoleConfiguration;
+import org.hibernate.console.execution.ExecutionContext;
import org.hibernate.eclipse.console.HibernateConsolePlugin;
import org.hibernate.mapping.PersistentClass;
import org.hibernate.mapping.RootClass;
@@ -44,22 +46,51 @@
public void selectionChanged(IAction action, ISelection selection) {
}
+ @SuppressWarnings("unchecked")
public void run(IAction action) {
ObjectPluginAction objectPluginAction = (ObjectPluginAction)action;
Map<ConsoleConfiguration, Set<PersistentClass>> mapCC_PCs = new
HashMap<ConsoleConfiguration, Set<PersistentClass>>();
TreePath[] paths = ((TreeSelection)objectPluginAction.getSelection()).getPaths();
for (int i = 0; i < paths.length; i++) {
+ final Object firstSegment = paths[i].getFirstSegment();
+ if (!(firstSegment instanceof ConsoleConfiguration)) {
+ continue;
+ }
+ final ConsoleConfiguration consoleConfig = (ConsoleConfiguration)(firstSegment);
+ Set<PersistentClass> setPC = mapCC_PCs.get(consoleConfig);
+ if (null == setPC) {
+ setPC = new HashSet<PersistentClass>();
+ mapCC_PCs.put(consoleConfig, setPC);
+ }
Object last_el = paths[i].getLastSegment();
if (last_el instanceof PersistentClass) {
PersistentClass persClass = (PersistentClass) last_el;
- ConsoleConfiguration consoleConfiguration =
(ConsoleConfiguration)(paths[i].getFirstSegment());
- Set<PersistentClass> setPC = mapCC_PCs.get(consoleConfiguration);
- if (null == setPC) {
- setPC = new HashSet<PersistentClass>();
- mapCC_PCs.put(consoleConfiguration, setPC);
+ setPC.add(persClass);
+ } else if (last_el instanceof Configuration) {
+ Configuration config = (Configuration)last_el;
+ Iterator<PersistentClass> it =
(Iterator<PersistentClass>)(config.getClassMappings());
+ while (it.hasNext()) {
+ setPC.add(it.next());
}
- setPC.add(persClass);
- }
+ } else if (last_el instanceof ConsoleConfiguration) {
+ Configuration config = consoleConfig.getConfiguration();
+ if (config == null) {
+ consoleConfig.build();
+ consoleConfig.execute( new ExecutionContext.Command() {
+ public Object execute() {
+ if(consoleConfig.hasConfiguration()) {
+ consoleConfig.getConfiguration().buildMappings();
+ }
+ return consoleConfig;
+ }
+ } );
+ config = consoleConfig.getConfiguration();
+ }
+ Iterator<PersistentClass> it =
(Iterator<PersistentClass>)(config.getClassMappings());
+ while (it.hasNext()) {
+ setPC.add(it.next());
+ }
+ }
}
for (Iterator<ConsoleConfiguration> it = mapCC_PCs.keySet().iterator();
it.hasNext(); ) {
ConsoleConfiguration consoleConfiguration = it.next();