PageRenderTime 39ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/src/mpv5/ui/dialogs/subcomponents/ControlPanel_Plugins.java

http://mp-rechnungs-und-kundenverwaltung.googlecode.com/
Java | 423 lines | 353 code | 55 blank | 15 comment | 19 complexity | c237be54e722fab3cd12b3c971e6e0ab MD5 | raw file
Possible License(s): LGPL-3.0, Apache-2.0, GPL-3.0, GPL-2.0, AGPL-3.0, JSON, BSD-3-Clause
  1. package mpv5.ui.dialogs.subcomponents;
  2. import java.awt.Component;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import java.io.File;
  6. import java.io.FileNotFoundException;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. import java.util.logging.Level;
  10. import java.util.logging.Logger;
  11. import javax.swing.DefaultListModel;
  12. import javax.swing.JMenuItem;
  13. import javax.swing.JPopupMenu;
  14. import javax.swing.SwingUtilities;
  15. import mpv5.data.PropertyStore;
  16. import mpv5.db.common.Context;
  17. import mpv5.db.common.DatabaseObject;
  18. import mpv5.db.common.NodataFoundException;
  19. import mpv5.db.common.QueryHandler;
  20. import mpv5.db.objects.User;
  21. import mpv5.globals.Messages;
  22. import mpv5.logging.Log;
  23. import mpv5.pluginhandling.MP5Plugin;
  24. import mpv5.pluginhandling.YabsPluginLoader;
  25. import mpv5.pluginhandling.Plugin;
  26. import mpv5.ui.dialogs.ControlApplet;
  27. import mpv5.ui.dialogs.Popup;
  28. import mpv5.ui.frames.MPView;
  29. import mpv5.usermanagement.MPSecurityManager;
  30. import mpv5.pluginhandling.UserPlugin;
  31. import mpv5.pluginhandling.YabsPlugin;
  32. /**
  33. *
  34. *
  35. */
  36. public class ControlPanel_Plugins extends javax.swing.JPanel implements ControlApplet {
  37. private static final long serialVersionUID = 1L;
  38. /**
  39. * This unique name identifies this control applet
  40. */
  41. public final String UNAME = "plugins";
  42. private PropertyStore oldvalues;
  43. private static ControlPanel_Plugins ident;
  44. private JPopupMenu popup;
  45. public ControlPanel_Plugins() {
  46. initComponents();
  47. addPopupMenu();
  48. refresh();
  49. setVisible(true);
  50. }
  51. /**
  52. * Import a plugin
  53. * @param file
  54. * @throws FileNotFoundException
  55. */
  56. public void importf(File file) throws FileNotFoundException {
  57. String s = Popup.Enter_Value(Messages.ENTER_A_DESCRIPTION);
  58. if (s == null) {
  59. s = file.getName();
  60. }
  61. YabsPluginLoader.importPlugin(s, file);
  62. refresh();
  63. }
  64. private void addPopupMenu() {
  65. popup = new JPopupMenu();
  66. JMenuItem jmi1;
  67. popup.add(jmi1 = new JMenuItem(Messages.ACTION_DELETE.toString()));
  68. popup.add(new JPopupMenu.Separator());
  69. JMenuItem jmi2;
  70. popup.add(jmi2 = new JMenuItem(Messages.ACTION_OPEN.toString()));
  71. popup.add(new JPopupMenu.Separator());
  72. jmi1.addActionListener(new ActionListener() {
  73. public void actionPerformed(ActionEvent e) {
  74. if (MPSecurityManager.checkAdminAccess()) {
  75. Plugin gin = (Plugin) list.getSelectedValue();
  76. gin.delete();
  77. refresh();
  78. }
  79. }
  80. });
  81. jmi2.addActionListener(new ActionListener() {
  82. public void actionPerformed(ActionEvent e) {
  83. Plugin gin = (Plugin) list.getSelectedValue();
  84. try {
  85. mpv5.YabsViewProxy.instance().getPluginLoader().loadPlugin(gin);
  86. } catch (Exception ex) {
  87. Popup.error(ex);
  88. } catch (Throwable ex) {
  89. Popup.error(new Exception(ex));
  90. }
  91. }
  92. });
  93. }
  94. // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  95. private void initComponents() {
  96. jPanel3 = new javax.swing.JPanel();
  97. jLabel3 = new javax.swing.JLabel();
  98. jLabel4 = new javax.swing.JLabel();
  99. jScrollPane1 = new javax.swing.JScrollPane();
  100. list = new javax.swing.JList();
  101. jPanel5 = new javax.swing.JPanel();
  102. jLabel8 = new javax.swing.JLabel();
  103. jLabel9 = new javax.swing.JLabel();
  104. labeledTextChooser2 = new mpv5.ui.beans.LabeledTextChooser();
  105. jButton4 = new javax.swing.JButton();
  106. jButton3 = new javax.swing.JButton();
  107. jPanel2 = new javax.swing.JPanel();
  108. jButton2 = new javax.swing.JButton();
  109. jButton1 = new javax.swing.JButton();
  110. setBackground(new java.awt.Color(255, 255, 255));
  111. java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle(); // NOI18N
  112. setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("ControlPanel_Plugins.border.title"))); // NOI18N
  113. setName("Form"); // NOI18N
  114. setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.PAGE_AXIS));
  115. jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder());
  116. jPanel3.setName("jPanel3"); // NOI18N
  117. jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12));
  118. jLabel3.setText(bundle.getString("ControlPanel_Plugins.jLabel3.text")); // NOI18N
  119. jLabel3.setName("jLabel3"); // NOI18N
  120. jLabel4.setFont(new java.awt.Font("Dialog", 0, 11));
  121. jLabel4.setText(bundle.getString("ControlPanel_Plugins.jLabel4.text")); // NOI18N
  122. jLabel4.setName("jLabel4"); // NOI18N
  123. jScrollPane1.setName("jScrollPane1"); // NOI18N
  124. list.setToolTipText(bundle.getString("ControlPanel_Plugins.list.toolTipText")); // NOI18N
  125. list.setName("list"); // NOI18N
  126. list.addMouseListener(new java.awt.event.MouseAdapter() {
  127. public void mouseClicked(java.awt.event.MouseEvent evt) {
  128. listMouseClicked(evt);
  129. }
  130. });
  131. jScrollPane1.setViewportView(list);
  132. javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
  133. jPanel3.setLayout(jPanel3Layout);
  134. jPanel3Layout.setHorizontalGroup(
  135. jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  136. .addGroup(jPanel3Layout.createSequentialGroup()
  137. .addContainerGap()
  138. .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  139. .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 425, Short.MAX_VALUE)
  140. .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  141. .addComponent(jLabel3)
  142. .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
  143. .addContainerGap())
  144. );
  145. jPanel3Layout.setVerticalGroup(
  146. jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  147. .addGroup(jPanel3Layout.createSequentialGroup()
  148. .addContainerGap()
  149. .addComponent(jLabel3)
  150. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  151. .addComponent(jLabel4)
  152. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  153. .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 22, Short.MAX_VALUE)
  154. .addContainerGap())
  155. );
  156. add(jPanel3);
  157. jPanel5.setBorder(javax.swing.BorderFactory.createEtchedBorder());
  158. jPanel5.setMaximumSize(new java.awt.Dimension(32767, 150));
  159. jPanel5.setName("jPanel5"); // NOI18N
  160. jPanel5.setPreferredSize(new java.awt.Dimension(453, 100));
  161. jLabel8.setFont(new java.awt.Font("Tahoma", 1, 12));
  162. jLabel8.setText(bundle.getString("ControlPanel_Plugins.jLabel8.text")); // NOI18N
  163. jLabel8.setName("jLabel8"); // NOI18N
  164. jLabel9.setFont(new java.awt.Font("Dialog", 0, 11));
  165. jLabel9.setText(bundle.getString("ControlPanel_Plugins.jLabel9.text")); // NOI18N
  166. jLabel9.setName("jLabel9"); // NOI18N
  167. labeledTextChooser2.set_Label(bundle.getString("ControlPanel_Plugins.labeledTextChooser2._Label")); // NOI18N
  168. labeledTextChooser2.set_LabelFont(new java.awt.Font("Tahoma", 0, 11));
  169. labeledTextChooser2.setName("labeledTextChooser2"); // NOI18N
  170. jButton4.setText(bundle.getString("ControlPanel_Plugins.jButton4.text")); // NOI18N
  171. jButton4.setName("jButton4"); // NOI18N
  172. jButton4.addActionListener(new java.awt.event.ActionListener() {
  173. public void actionPerformed(java.awt.event.ActionEvent evt) {
  174. jButton4ActionPerformed(evt);
  175. }
  176. });
  177. jButton3.setText(bundle.getString("ControlPanel_Plugins.jButton3.text")); // NOI18N
  178. jButton3.setName("jButton3"); // NOI18N
  179. jButton3.addActionListener(new java.awt.event.ActionListener() {
  180. public void actionPerformed(java.awt.event.ActionEvent evt) {
  181. jButton3ActionPerformed(evt);
  182. }
  183. });
  184. javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
  185. jPanel5.setLayout(jPanel5Layout);
  186. jPanel5Layout.setHorizontalGroup(
  187. jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  188. .addGroup(jPanel5Layout.createSequentialGroup()
  189. .addContainerGap()
  190. .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  191. .addComponent(jLabel8)
  192. .addGroup(jPanel5Layout.createSequentialGroup()
  193. .addComponent(labeledTextChooser2, javax.swing.GroupLayout.PREFERRED_SIZE, 264, javax.swing.GroupLayout.PREFERRED_SIZE)
  194. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  195. .addComponent(jButton4)
  196. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  197. .addComponent(jButton3))
  198. .addComponent(jLabel9))
  199. .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  200. );
  201. jPanel5Layout.setVerticalGroup(
  202. jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  203. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
  204. .addContainerGap()
  205. .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  206. .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  207. .addComponent(jButton4)
  208. .addComponent(jButton3))
  209. .addGroup(jPanel5Layout.createSequentialGroup()
  210. .addComponent(jLabel8)
  211. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  212. .addComponent(jLabel9)
  213. .addGap(9, 9, 9)
  214. .addComponent(labeledTextChooser2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
  215. .addGap(276, 276, 276))
  216. );
  217. add(jPanel5);
  218. jPanel2.setBackground(new java.awt.Color(255, 255, 255));
  219. jPanel2.setName("jPanel2"); // NOI18N
  220. jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
  221. jButton2.setText(bundle.getString("ControlPanel_Plugins.jButton2.text")); // NOI18N
  222. jButton2.setName("jButton2"); // NOI18N
  223. jButton2.addActionListener(new java.awt.event.ActionListener() {
  224. public void actionPerformed(java.awt.event.ActionEvent evt) {
  225. jButton2ActionPerformed(evt);
  226. }
  227. });
  228. jPanel2.add(jButton2);
  229. jButton1.setText(bundle.getString("ControlPanel_Plugins.jButton1.text")); // NOI18N
  230. jButton1.setName("jButton1"); // NOI18N
  231. jButton1.addActionListener(new java.awt.event.ActionListener() {
  232. public void actionPerformed(java.awt.event.ActionEvent evt) {
  233. jButton1ActionPerformed(evt);
  234. }
  235. });
  236. jPanel2.add(jButton1);
  237. add(jPanel2);
  238. }// </editor-fold>//GEN-END:initComponents
  239. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
  240. try {
  241. List data = DatabaseObject.getReferencedObjects(mpv5.db.objects.User.getCurrentUser(), Context.getPluginsToUsers());
  242. for (int i = 0; i < data.size(); i++) {
  243. ((UserPlugin) data.get(i)).delete();
  244. }
  245. } catch (NodataFoundException ex) {
  246. Log.Debug(ex);
  247. }
  248. Object[] plugs = list.getSelectedValues();
  249. for (int i = 0; i < plugs.length; i++) {
  250. Plugin gin = (Plugin) plugs[i];
  251. UserPlugin up = new UserPlugin();
  252. up.setUsersids(mpv5.db.objects.User.getCurrentUser().__getIDS());
  253. up.setPluginsids(gin.__getIDS());
  254. up.setCname(gin.__getCname());
  255. up.save();
  256. }
  257. }//GEN-LAST:event_jButton1ActionPerformed
  258. private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
  259. Object[] plugs = list.getSelectedValues();
  260. for (int i = 0; i < plugs.length; i++) {
  261. Plugin gin = (Plugin) plugs[i];
  262. try {
  263. mpv5.YabsViewProxy.instance().getPluginLoader().loadPlugin(gin);
  264. } catch (Exception ex) {
  265. Popup.error(ex);
  266. } catch (Throwable ex) {
  267. Popup.error(new Exception(ex));
  268. }
  269. }
  270. }//GEN-LAST:event_jButton2ActionPerformed
  271. private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
  272. YabsPlugin p = null;
  273. try {
  274. if (YabsPluginLoader.checkPlugin(new File(labeledTextChooser2.get_Text(true))) != null) {
  275. p = YabsPluginLoader.checkPlugin(new File(labeledTextChooser2.get_Text(true)));
  276. try {
  277. YabsPluginLoader.loadPlugin(p);
  278. } catch (Exception ex) {
  279. Popup.error(ex);
  280. } catch (Throwable ex) {
  281. Popup.error(new Exception(ex));
  282. }
  283. } else {
  284. Popup.notice(Messages.ERROR_OCCURED);
  285. }
  286. } catch (Exception e) {
  287. Popup.notice(Messages.ERROR_OCCURED);
  288. }
  289. }//GEN-LAST:event_jButton3ActionPerformed
  290. private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
  291. if (labeledTextChooser2.hasText()) {
  292. try {
  293. importf(new File(labeledTextChooser2.get_Text(true)));
  294. } catch (FileNotFoundException ex) {
  295. Popup.error(ex);
  296. }
  297. }
  298. }//GEN-LAST:event_jButton4ActionPerformed
  299. private void listMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_listMouseClicked
  300. if (SwingUtilities.isRightMouseButton(evt) && !list.isSelectionEmpty() && list.locationToIndex(evt.getPoint()) == list.getSelectedIndex()) {
  301. popup.show(list, evt.getX(), evt.getY());
  302. }
  303. }//GEN-LAST:event_listMouseClicked
  304. public void setValues(PropertyStore values) {
  305. oldvalues = values;
  306. }
  307. public String getUname() {
  308. return UNAME;
  309. }
  310. public void reset() {
  311. setValues(oldvalues);
  312. }
  313. // Variables declaration - do not modify//GEN-BEGIN:variables
  314. private javax.swing.JButton jButton1;
  315. private javax.swing.JButton jButton2;
  316. private javax.swing.JButton jButton3;
  317. private javax.swing.JButton jButton4;
  318. private javax.swing.JLabel jLabel3;
  319. private javax.swing.JLabel jLabel4;
  320. private javax.swing.JLabel jLabel8;
  321. private javax.swing.JLabel jLabel9;
  322. private javax.swing.JPanel jPanel2;
  323. private javax.swing.JPanel jPanel3;
  324. private javax.swing.JPanel jPanel5;
  325. private javax.swing.JScrollPane jScrollPane1;
  326. private mpv5.ui.beans.LabeledTextChooser labeledTextChooser2;
  327. private javax.swing.JList list;
  328. // End of variables declaration//GEN-END:variables
  329. private void refresh() {
  330. DefaultListModel xl = new DefaultListModel();
  331. ArrayList<Plugin> data = new ArrayList<Plugin>();
  332. try {
  333. data = DatabaseObject.getObjects(Context.getPlugins());
  334. } catch (NodataFoundException ex) {
  335. Log.Debug(this, ex.getMessage());
  336. }
  337. ArrayList<UserPlugin> udata = new ArrayList<UserPlugin>();
  338. try {
  339. udata = DatabaseObject.getObjects(Context.getPluginsToUsers());
  340. } catch (NodataFoundException ex) {
  341. Log.Debug(this, ex.getMessage());
  342. }
  343. ArrayList<Integer> selected = new ArrayList<Integer>();
  344. Log.Debug(this, "Plugins found: " + data.size());
  345. for (int i = 0; i < data.size(); i++) {
  346. Plugin lugin = data.get(i);
  347. xl.addElement(lugin);
  348. for (int ij = 0; ij < udata.size(); ij++) {
  349. UserPlugin userPlugin = udata.get(ij);
  350. if (lugin.__getIDS().intValue() == userPlugin.__getPluginsids()) {
  351. selected.add(ij);
  352. }
  353. }
  354. }
  355. int[] sel = new int[selected.size()];
  356. for (int i = 0; i < selected.size(); i++) {
  357. Integer integer = selected.get(i);
  358. sel[i] = integer.intValue();
  359. }
  360. list.setModel(xl);
  361. list.setSelectedIndices(sel);
  362. }
  363. public Component getAndRemoveActionPanel() {
  364. this.remove(jPanel2);
  365. validate();
  366. return jPanel2;
  367. }
  368. }