Lines 42-56
Link Here
|
42 |
|
42 |
|
43 |
package org.netbeans.modules.maven.osgi.customizer; |
43 |
package org.netbeans.modules.maven.osgi.customizer; |
44 |
|
44 |
|
|
|
45 |
import java.awt.event.ActionEvent; |
46 |
import java.awt.event.ActionListener; |
47 |
import java.lang.reflect.Method; |
45 |
import javax.swing.JComponent; |
48 |
import javax.swing.JComponent; |
|
|
49 |
import javax.swing.SwingUtilities; |
46 |
import org.netbeans.api.project.Project; |
50 |
import org.netbeans.api.project.Project; |
|
|
51 |
import org.netbeans.modules.maven.api.FileUtilities; |
47 |
import org.netbeans.modules.maven.api.NbMavenProject; |
52 |
import org.netbeans.modules.maven.api.NbMavenProject; |
48 |
import org.netbeans.modules.maven.api.PluginPropertyUtils; |
53 |
import org.netbeans.modules.maven.api.PluginPropertyUtils; |
49 |
import org.netbeans.modules.maven.api.customizer.ModelHandle2; |
54 |
import org.netbeans.modules.maven.api.customizer.ModelHandle2; |
50 |
import org.netbeans.modules.maven.osgi.OSGiConstants; |
55 |
import org.netbeans.modules.maven.osgi.OSGiConstants; |
|
|
56 |
import org.netbeans.spi.project.ui.LogicalViewProvider; |
51 |
import org.netbeans.spi.project.ui.support.ProjectCustomizer; |
57 |
import org.netbeans.spi.project.ui.support.ProjectCustomizer; |
52 |
import org.netbeans.spi.project.ui.support.ProjectCustomizer.Category; |
58 |
import org.netbeans.spi.project.ui.support.ProjectCustomizer.Category; |
|
|
59 |
import org.openide.explorer.ExplorerManager; |
60 |
import org.openide.filesystems.FileObject; |
61 |
import org.openide.nodes.FilterNode; |
62 |
import org.openide.nodes.Node; |
63 |
import org.openide.util.Exceptions; |
53 |
import org.openide.util.Lookup; |
64 |
import org.openide.util.Lookup; |
|
|
65 |
import org.openide.windows.TopComponent; |
66 |
import org.openide.windows.WindowManager; |
54 |
|
67 |
|
55 |
/** |
68 |
/** |
56 |
* |
69 |
* |
Lines 84-91
Link Here
|
84 |
@Override |
97 |
@Override |
85 |
public JComponent createComponent(Category category, Lookup context) { |
98 |
public JComponent createComponent(Category category, Lookup context) { |
86 |
ModelHandle2 handle = context.lookup(ModelHandle2.class); |
99 |
ModelHandle2 handle = context.lookup(ModelHandle2.class); |
87 |
Project prj = context.lookup(Project.class); |
100 |
final Project prj = context.lookup(Project.class); |
88 |
final PackagesPanel panel = new PackagesPanel(handle, prj); |
101 |
final PackagesPanel panel = new PackagesPanel(handle, prj); |
|
|
102 |
category.setStoreListener(new ActionListener() { |
103 |
@Override |
104 |
public void actionPerformed(ActionEvent e) { |
105 |
SwingUtilities.invokeLater(new Runnable() { |
106 |
|
107 |
@Override |
108 |
public void run() { |
109 |
TopComponent tc = WindowManager.getDefault().findTopComponent("projectTabLogical_tc"); |
110 |
if (tc instanceof ExplorerManager.Provider) { |
111 |
Node root = ((ExplorerManager.Provider)tc).getExplorerManager().getRootContext(); |
112 |
Node projectNode = null; |
113 |
for (Node prjnd : root.getChildren().getNodes()) { |
114 |
if (prj.equals(prjnd.getLookup().lookup(Project.class))) { |
115 |
projectNode = prjnd; |
116 |
break; |
117 |
} |
118 |
} |
119 |
if (projectNode != null) { |
120 |
LogicalViewProvider lvp = prj.getLookup().lookup(LogicalViewProvider.class); |
121 |
|
122 |
try { |
123 |
Method m1 = Node.class.getDeclaredMethod("fireIconChange"); |
124 |
m1.setAccessible(true); |
125 |
Method m2 = Node.class.getDeclaredMethod("fireOpenedIconChange"); |
126 |
m2.setAccessible(true); |
127 |
for (FileObject fo : FileUtilities.getPackageFileObjects(prj)) { |
128 |
Node nd = lvp.findPath(projectNode, fo); |
129 |
|
130 |
if (nd != null) { |
131 |
|
132 |
m1.invoke(nd); |
133 |
m2.invoke(nd); |
134 |
} |
135 |
} |
136 |
} catch (Throwable x) { |
137 |
Exceptions.printStackTrace(x); |
138 |
} |
139 |
|
140 |
} |
141 |
} |
142 |
} |
143 |
}); |
144 |
} |
145 |
}); |
89 |
return panel; |
146 |
return panel; |
90 |
} |
147 |
} |
91 |
|
148 |
|