[SYNCOPE-808] correct license file
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/17056055 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/17056055 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/17056055 Branch: refs/heads/2_0_X Commit: 17056055af2829786f90f6a76462740ca79259c0 Parents: 2381d0a Author: Andrea Patricelli <andreapatrice...@apache.org> Authored: Thu Apr 20 17:20:52 2017 +0200 Committer: Andrea Patricelli <andreapatrice...@apache.org> Committed: Mon Apr 24 15:01:21 2017 +0200 ---------------------------------------------------------------------- ide/netbeans/pom.xml | 15 +- .../syncope/ide/netbeans/PluginConstants.java | 7 +- .../view/ResourceExplorerTopComponent.java | 200 ++++++++++++------- .../ide/netbeans/view/ServerDetailsView.java | 2 + .../syncope/ide/netbeans/view/favicon.png | Bin 0 -> 641 bytes 5 files changed, 151 insertions(+), 73 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/17056055/ide/netbeans/pom.xml ---------------------------------------------------------------------- diff --git a/ide/netbeans/pom.xml b/ide/netbeans/pom.xml index 4e791ed..674a605 100644 --- a/ide/netbeans/pom.xml +++ b/ide/netbeans/pom.xml @@ -23,8 +23,8 @@ under the License. <version>2.0.4-SNAPSHOT</version> </parent> - <name>Apache Syncope IDE Netbeans</name> - <description>Apache Syncope IDE Netbeans</description> + <name>Apache Syncope Netbeans IDE plugin</name> + <description>Apache Syncope Netbeans IDE plugin</description> <groupId>org.apache.syncope.ide</groupId> <artifactId>syncope-ide-netbeans</artifactId> @@ -130,6 +130,9 @@ under the License. <extensions>true</extensions> <configuration> <useOSGiDependencies>false</useOSGiDependencies> + <licenseName>Apache License 2.0</licenseName> + <licenseFile>${basedir}/LICENSE</licenseFile> + <homePageUrl>http://syncope.apache.org/</homePageUrl> </configuration> </plugin> @@ -171,6 +174,14 @@ under the License. <resources> <resource> + <directory>src/main/resources</directory> + <filtering>false</filtering> + <includes> + <include>org/apache/syncope/**/*.png</include> + </includes> + </resource> + + <resource> <directory>${basedir}</directory> <targetPath>META-INF</targetPath> <includes> http://git-wip-us.apache.org/repos/asf/syncope/blob/17056055/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/PluginConstants.java ---------------------------------------------------------------------- diff --git a/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/PluginConstants.java b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/PluginConstants.java index 676d9a9..8461b27 100644 --- a/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/PluginConstants.java +++ b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/PluginConstants.java @@ -23,7 +23,7 @@ import org.apache.syncope.common.lib.types.ReportTemplateFormat; public final class PluginConstants { - public static final String MAIL_TEMPLATE = "Mail Template"; + public static final String MAIL_TEMPLATE = "Mail Templates"; public static final String REPORT_XSLTS = "Report XSLTs"; @@ -33,9 +33,10 @@ public final class PluginConstants { public static final String[] REPORT_TEMPLATE_FORMATS = { ReportTemplateFormat.HTML.name(), ReportTemplateFormat.CSV.name(), ReportTemplateFormat.FO.name() }; - public static final String DISPLAY_NAME = "Apache Syncope"; + public static final String ROOT_NAME = "Apache Syncope"; - public static final String TOOL_TIP_TEXT = "This is a Apache Syncope window"; + public static final String TOOL_TIP_TEXT = "Templates page, you can create, edit and delete tempates, " + + "on save they will be sent to Apache Syncope remote host"; private PluginConstants() { } http://git-wip-us.apache.org/repos/asf/syncope/blob/17056055/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ResourceExplorerTopComponent.java ---------------------------------------------------------------------- diff --git a/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ResourceExplorerTopComponent.java b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ResourceExplorerTopComponent.java index 6305abe..4bb8288 100644 --- a/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ResourceExplorerTopComponent.java +++ b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ResourceExplorerTopComponent.java @@ -18,20 +18,29 @@ */ package org.apache.syncope.ide.netbeans.view; +import static org.apache.syncope.common.lib.types.MailTemplateFormat.TEXT; +import static org.apache.syncope.common.lib.types.ReportTemplateFormat.CSV; +import static org.apache.syncope.common.lib.types.ReportTemplateFormat.FO; +import static org.apache.syncope.common.lib.types.ReportTemplateFormat.HTML; + +import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; +import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; +import java.net.ConnectException; import java.nio.charset.Charset; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import java.util.prefs.Preferences; import javax.swing.Action; +import javax.swing.ImageIcon; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPopupMenu; @@ -97,6 +106,8 @@ public final class ResourceExplorerTopComponent extends TopComponent { private final DefaultMutableTreeNode root; + private DefaultMutableTreeNode visibleRoot; + private final DefaultMutableTreeNode mailTemplates; private final DefaultMutableTreeNode reportXslts; @@ -110,12 +121,12 @@ public final class ResourceExplorerTopComponent extends TopComponent { public ResourceExplorerTopComponent() { initComponents(); - setName(PluginConstants.DISPLAY_NAME); + setName(PluginConstants.ROOT_NAME); setToolTipText(PluginConstants.TOOL_TIP_TEXT); treeModel = (DefaultTreeModel) resourceExplorerTree.getModel(); root = (DefaultMutableTreeNode) treeModel.getRoot(); - DefaultMutableTreeNode visibleRoot = new DefaultMutableTreeNode(PluginConstants.DISPLAY_NAME); + visibleRoot = new DefaultMutableTreeNode(PluginConstants.ROOT_NAME); mailTemplates = new DefaultMutableTreeNode(PluginConstants.MAIL_TEMPLATE); reportXslts = new DefaultMutableTreeNode(PluginConstants.REPORT_XSLTS); root.add(visibleRoot); @@ -159,6 +170,17 @@ public final class ResourceExplorerTopComponent extends TopComponent { }// </editor-fold>//GEN-END:initComponents //CHECKSTYLE:ON + @Override + public Image getIcon() { + return new ImageIcon(getClass().getResource("/org/apache/syncope/ide/netbeans/view/favicon.png")).getImage(); + } + + private void initTemplatesTree() { + visibleRoot.add(mailTemplates); + visibleRoot.add(reportXslts); + treeModel.reload(); + } + private void resourceExplorerTreeMouseClicked(final java.awt.event.MouseEvent evt) { if (evt.getButton() == MouseEvent.BUTTON1 && evt.getClickCount() == 2) { DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) resourceExplorerTree. @@ -190,7 +212,7 @@ public final class ResourceExplorerTopComponent extends TopComponent { folderRightClickAction(evt, mailTemplates); } else if (selectedNodeName.equals(PluginConstants.REPORT_XSLTS)) { folderRightClickAction(evt, reportXslts); - } else if (selectedNodeName.equals(PluginConstants.DISPLAY_NAME)) { + } else if (selectedNodeName.equals(PluginConstants.ROOT_NAME)) { rootRightClickAction(evt); } } @@ -203,7 +225,7 @@ public final class ResourceExplorerTopComponent extends TopComponent { @Override public void componentOpened() { - // look for connection preferences + //connection params mgmt Preferences prefs = NbPreferences.forModule(ResourceExplorerTopComponent.class); if (StringUtils.isBlank(prefs.get("scheme", null)) || StringUtils.isBlank(prefs.get("host", null)) @@ -215,69 +237,21 @@ public final class ResourceExplorerTopComponent extends TopComponent { try { mailTemplateManagerService = ResourceConnector.getMailTemplateManagerService(); reportTemplateManagerService = ResourceConnector.getReportTemplateManagerService(); - } catch (IOException e) { - JOptionPane.showMessageDialog(null, e.getMessage(), "Error while retrieving templates", - JOptionPane.ERROR_MESSAGE); + initTemplatesTree(); + loadTemplates(); + } catch (ConnectException e) { + JOptionPane.showMessageDialog(null, e.getMessage(), "Connection Error", JOptionPane.ERROR_MESSAGE); new ServerDetailsView(null, true).setVisible(true); + } catch (Exception e) { + JOptionPane.showMessageDialog(null, e.getMessage(), "Generic Error", JOptionPane.ERROR_MESSAGE); + closeComponent(); } - Runnable tsk = new Runnable() { - - @Override - public void run() { - final ProgressHandle progr = ProgressHandleFactory.createHandle("Loading Templates", new Cancellable() { - - @Override - public boolean cancel() { - return true; - } - }, new Action() { - - @Override - public Object getValue(final String key) { - return null; - } - - @Override - public void putValue(final String key, final Object value) { - } - - @Override - public void setEnabled(final boolean b) { - } - - @Override - public boolean isEnabled() { - return false; - } - - @Override - public void addPropertyChangeListener(final PropertyChangeListener listener) { - } - - @Override - public void removePropertyChangeListener(final PropertyChangeListener listener) { - } - - @Override - public void actionPerformed(final ActionEvent e) { - } - }); - - progr.start(); - progr.progress("Loading Templates."); - addMailTemplates(); - addReportXslts(); - progr.finish(); - } - - }; - RequestProcessor.getDefault().post(tsk); } @Override public void componentClosed() { - // TODO add custom code on component closing + resetTree(); } void writeProperties(final java.util.Properties p) { @@ -295,8 +269,7 @@ public final class ResourceExplorerTopComponent extends TopComponent { private void addMailTemplates() { List<MailTemplateTO> mailTemplateList = mailTemplateManagerService.list(); for (MailTemplateTO mailTemplate : mailTemplateList) { - this.mailTemplates.add(new DefaultMutableTreeNode( - mailTemplate.getKey())); + this.mailTemplates.add(new DefaultMutableTreeNode(mailTemplate.getKey())); } treeModel.reload(); } @@ -304,8 +277,7 @@ public final class ResourceExplorerTopComponent extends TopComponent { private void addReportXslts() { List<ReportTemplateTO> reportTemplates = reportTemplateManagerService.list(); for (ReportTemplateTO reportTemplate : reportTemplates) { - reportXslts.add(new DefaultMutableTreeNode( - reportTemplate.getKey())); + reportXslts.add(new DefaultMutableTreeNode(reportTemplate.getKey())); } treeModel.reload(); } @@ -499,6 +471,17 @@ public final class ResourceExplorerTopComponent extends TopComponent { fob.setAttribute("description", "TEXT"); DataObject data = DataObject.find(fob); data.getLookup().lookup(OpenCookie.class).open(); + data.addPropertyChangeListener(new PropertyChangeListener() { + + @Override + public void propertyChange(final PropertyChangeEvent evt) { + if (DataObject.PROP_MODIFIED.equals(evt.getPropertyName())) { + //save item remotely + LOG.info("Saving Mail template"); + saveContent(); + } + } + }); } } @@ -556,15 +539,26 @@ public final class ResourceExplorerTopComponent extends TopComponent { FileObject fob = FileUtil.toFileObject(file.getAbsoluteFile()); DataObject data = DataObject.find(fob); data.getLookup().lookup(OpenCookie.class).open(); + data.addPropertyChangeListener(new PropertyChangeListener() { + + @Override + public void propertyChange(final PropertyChangeEvent evt) { + if (DataObject.PROP_MODIFIED.equals(evt.getPropertyName())) { + //save item remotely + LOG.info("Saving Report template"); + saveContent(); + } + } + }); } } private void saveContent() { try { - JTextComponent ed = EditorRegistry.lastFocusedComponent(); - Document document = ed.getDocument(); - String content = document.getText(0, document.getLength()); - String path = (String) document.getProperty(Document.TitleProperty); + JTextComponent lastFocusedDoc = EditorRegistry.lastFocusedComponent(); + Document doc = lastFocusedDoc.getDocument(); + String content = doc.getText(0, doc.getLength()); + String path = (String) doc.getProperty(Document.TitleProperty); String[] temp = path.split(File.separator); String name = temp[temp.length - 1]; String templateType = temp[temp.length - 2]; @@ -600,4 +594,74 @@ public final class ResourceExplorerTopComponent extends TopComponent { } } + private void loadTemplates() { + LOG.info("Loading Apache Syncope templates..."); + Runnable tsk = new Runnable() { + + @Override + public void run() { + final ProgressHandle progr = ProgressHandleFactory.createHandle("Loading Templates", new Cancellable() { + + @Override + public boolean cancel() { + return true; + } + }, new Action() { + + @Override + public Object getValue(final String key) { + return null; + } + + @Override + public void putValue(final String key, final Object value) { + } + + @Override + public void setEnabled(final boolean b) { + } + + @Override + public boolean isEnabled() { + return false; + } + + @Override + public void addPropertyChangeListener(final PropertyChangeListener listener) { + } + + @Override + public void removePropertyChangeListener(final PropertyChangeListener listener) { + } + + @Override + public void actionPerformed(final ActionEvent e) { + } + }); + + progr.start(); + progr.progress("Loading Templates."); + addMailTemplates(); + addReportXslts(); + progr.finish(); + } + + }; + RequestProcessor.getDefault().post(tsk); + } + + private void closeComponent() { + boolean isClosed = this.close(); + if (!isClosed) { + LOG.log(Level.SEVERE, "Unable to close {0}", getClass().getSimpleName()); + } + } + + private void resetTree() { + visibleRoot.removeAllChildren(); + mailTemplates.removeAllChildren(); + reportXslts.removeAllChildren(); + treeModel.reload(); + } + } http://git-wip-us.apache.org/repos/asf/syncope/blob/17056055/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ServerDetailsView.java ---------------------------------------------------------------------- diff --git a/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ServerDetailsView.java b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ServerDetailsView.java index f4177ac..2e8497d 100644 --- a/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ServerDetailsView.java +++ b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ServerDetailsView.java @@ -170,6 +170,8 @@ public class ServerDetailsView extends JDialog { prefs.put("port", portTxt.getText()); prefs.put("username", userNameTxt.getText()); prefs.put("password", new String(passwordTxt.getPassword())); + // send event on conn params changed + prefs.putBoolean("reloadConnection", true); // dismiss panel this.dispose(); } else { http://git-wip-us.apache.org/repos/asf/syncope/blob/17056055/ide/netbeans/src/main/resources/org/apache/syncope/ide/netbeans/view/favicon.png ---------------------------------------------------------------------- diff --git a/ide/netbeans/src/main/resources/org/apache/syncope/ide/netbeans/view/favicon.png b/ide/netbeans/src/main/resources/org/apache/syncope/ide/netbeans/view/favicon.png new file mode 100644 index 0000000..aa2f3e2 Binary files /dev/null and b/ide/netbeans/src/main/resources/org/apache/syncope/ide/netbeans/view/favicon.png differ