Author: vyemialyanchyk
Date: 2008-04-10 07:10:00 -0400 (Thu, 10 Apr 2008)
New Revision: 7479
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.view/src/org/jboss/tools/hibernate/ui/view/views/OpenDiagramActionDelegate.java
Log:
http://jira.jboss.com/jira/browse/JBIDE-1559
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.view/src/org/jboss/tools/hibernate/ui/view/views/OpenDiagramActionDelegate.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.view/src/org/jboss/tools/hibernate/ui/view/views/OpenDiagramActionDelegate.java 2008-04-10
11:09:57 UTC (rev 7478)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.ui.view/src/org/jboss/tools/hibernate/ui/view/views/OpenDiagramActionDelegate.java 2008-04-10
11:10:00 UTC (rev 7479)
@@ -11,6 +11,10 @@
package org.jboss.tools.hibernate.ui.view.views;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jface.action.IAction;
@@ -23,27 +27,39 @@
import org.hibernate.console.ConsoleConfiguration;
import org.hibernate.eclipse.console.utils.ProjectUtils;
import org.hibernate.mapping.PersistentClass;
+import org.hibernate.mapping.RootClass;
import org.jboss.tools.hibernate.ui.view.ViewPlugin;
public class OpenDiagramActionDelegate extends OpenActionDelegate {
+
private HashMap hashMap = new HashMap();
public void run(IAction action) {
ObjectPluginAction objectPluginAction = (ObjectPluginAction)action;
+ Map mapCC_PCs = new HashMap();
TreePath[] paths = ((TreeSelection)objectPluginAction.getSelection()).getPaths();
for (int i = 0; i < paths.length; i++) {
Object last_el = paths[i].getLastSegment();
if (last_el instanceof PersistentClass) {
PersistentClass persClass = (PersistentClass) last_el;
ConsoleConfiguration consoleConfiguration =
(ConsoleConfiguration)(paths[i].getFirstSegment());
-
- try {
- openEditor(persClass, consoleConfiguration);
- } catch (PartInitException e) {
- ViewPlugin.getDefault().logError("Can't open mapping view.",
e); //$NON-NLS-1$
- }
+ Set setPC = (Set)mapCC_PCs.get(consoleConfiguration);
+ if (null == setPC) {
+ setPC = new HashSet();
+ mapCC_PCs.put(consoleConfiguration, setPC);
+ }
+ setPC.add(persClass);
}
}
+ for (Iterator it = mapCC_PCs.keySet().iterator(); it.hasNext(); ) {
+ ConsoleConfiguration consoleConfiguration = (ConsoleConfiguration)it.next();
+ Set setPC = (Set)mapCC_PCs.get(consoleConfiguration);
+ try {
+ openEditor(setPC, consoleConfiguration);
+ } catch (PartInitException e) {
+ ViewPlugin.getDefault().logError("Can't open mapping view.",
e); //$NON-NLS-1$
+ }
+ }
}
public IEditorPart openEditor(PersistentClass persClass,
@@ -60,4 +76,31 @@
return IDE.openEditor(ViewPlugin.getPage(),input
,"org.jboss.tools.hibernate.ui.veditor.editors.visualeditor"); //$NON-NLS-1$
}
+
+ public IEditorPart openEditor(Set setPC, ConsoleConfiguration consoleConfiguration)
throws PartInitException {
+
+ if (0 >= setPC.size()) {
+ return null;
+ }
+
+ RootClass[] rcArr = new RootClass[setPC.size()];
+ String id = "";
+ PersistentClass persClass = null;
+ int i = 0;
+ for (Iterator it = setPC.iterator(); it.hasNext(); ) {
+ persClass = (PersistentClass)it.next();
+ id += "@" + persClass.toString();
+ rcArr[i++] = persClass.getRootClass();
+ }
+
+ ObjectEditorInput input = (ObjectEditorInput)hashMap.get(id);
+ IJavaProject proj = ProjectUtils.findJavaProject(consoleConfiguration);
+
+ if (null == input) {
+ input = new ObjectEditorInput(consoleConfiguration, rcArr, proj);
+ hashMap.put(id, input);
+ }
+
+ return IDE.openEditor(ViewPlugin.getPage(),input
,"org.jboss.tools.hibernate.ui.veditor.editors.visualeditor"); //$NON-NLS-1$
+ }
}
\ No newline at end of file