From a423792c6bb8b1e2ef9ae795d7208dfbb5b7acf0 Mon Sep 17 00:00:00 2001 From: Philipp Spohr <spohr.philipp@web.de> Date: Sun, 6 Aug 2017 14:15:16 +0200 Subject: [PATCH] Some work on a basic skeleton app that can test native library interaction --- .gitignore | 1 + pom.xml | 4 +- .../{internal => }/CyActivator.java | 3 +- .../yoshikoWrapper/core/YoshikoInterface.java | 43 +++++++++++++++++++ .../ba/yoshikoWrapper/core/package-info.java | 8 ++++ .../ba/yoshikoWrapper/gui/LibStatusPanel.java | 21 +++++++++ .../hhu/ba/yoshikoWrapper/gui/MainPanel.java | 36 ++++++++++++++-- .../{internal => gui}/MainPanelAction.java | 4 +- .../ba/yoshikoWrapper/gui/YLibChooser.java | 39 +++++++++++++++++ .../ba/yoshikoWrapper/gui/package-info.java | 8 ++++ 10 files changed, 158 insertions(+), 9 deletions(-) rename src/main/java/de/hhu/ba/yoshikoWrapper/{internal => }/CyActivator.java (91%) create mode 100644 src/main/java/de/hhu/ba/yoshikoWrapper/core/YoshikoInterface.java create mode 100644 src/main/java/de/hhu/ba/yoshikoWrapper/core/package-info.java create mode 100644 src/main/java/de/hhu/ba/yoshikoWrapper/gui/LibStatusPanel.java rename src/main/java/de/hhu/ba/yoshikoWrapper/{internal => gui}/MainPanelAction.java (92%) create mode 100644 src/main/java/de/hhu/ba/yoshikoWrapper/gui/YLibChooser.java create mode 100644 src/main/java/de/hhu/ba/yoshikoWrapper/gui/package-info.java diff --git a/.gitignore b/.gitignore index f6eef68..aa8cbea 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ /.settings/org.eclipse.jdt.core.prefs /bin/de /.gradle/ +*.eclipse.m2e.core.prefs diff --git a/pom.xml b/pom.xml index f12c3a6..0834ba6 100644 --- a/pom.xml +++ b/pom.xml @@ -2,8 +2,8 @@ <modelVersion>4.0.0</modelVersion> <properties> - <bundle.symbolicName>org.cytoscape.sample-control-panel</bundle.symbolicName> - <bundle.namespace>org.cytoscape.sample.internal</bundle.namespace> + <bundle.symbolicName>de.hhu.ba.yoshikoWrapper</bundle.symbolicName> + <bundle.namespace>de.hhu.ba.yoshikoWrapper</bundle.namespace> <cytoscape.api.version>3.0.0</cytoscape.api.version> <maven-bundle-plugin.version>2.3.4</maven-bundle-plugin.version> diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/internal/CyActivator.java b/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java similarity index 91% rename from src/main/java/de/hhu/ba/yoshikoWrapper/internal/CyActivator.java rename to src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java index 76e6dc2..7cabdf8 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/internal/CyActivator.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java @@ -1,4 +1,4 @@ -package de.hhu.ba.yoshikoWrapper.internal; +package de.hhu.ba.yoshikoWrapper; import java.util.Properties; @@ -9,6 +9,7 @@ import org.cytoscape.service.util.AbstractCyActivator; import org.osgi.framework.BundleContext; import de.hhu.ba.yoshikoWrapper.gui.MainPanel; +import de.hhu.ba.yoshikoWrapper.gui.MainPanelAction; public class CyActivator extends AbstractCyActivator { diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/YoshikoInterface.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/YoshikoInterface.java new file mode 100644 index 0000000..736716d --- /dev/null +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/YoshikoInterface.java @@ -0,0 +1,43 @@ +package de.hhu.ba.yoshikoWrapper.core; + +public class YoshikoInterface { + + //SINGLETON TEMPLATE + + private static YoshikoInterface instance; + private static boolean libraryLoaded; + + public static YoshikoInterface getInstance() { + if (instance == null){ + instance = new YoshikoInterface(); + } + return instance; + } + + private YoshikoInterface() { + libraryLoaded = false; + } + + + public void loadLibrary(String libPath) { + try { + System.loadLibrary(libPath); + libraryLoaded = true; + } + catch(Exception e) { + e.printStackTrace(); + libraryLoaded = false; + } + finally { + + } + + } + + //SETTER / GETTER + + public boolean isLibraryLoaded() { + return libraryLoaded; + } + +} diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/package-info.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/package-info.java new file mode 100644 index 0000000..93b406c --- /dev/null +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/package-info.java @@ -0,0 +1,8 @@ +/** + * + */ +/** + * @author Philipp Spohr, Aug 6, 2017 + * + */ +package de.hhu.ba.yoshikoWrapper.core; \ No newline at end of file diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/LibStatusPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/LibStatusPanel.java new file mode 100644 index 0000000..82e0e96 --- /dev/null +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/LibStatusPanel.java @@ -0,0 +1,21 @@ +package de.hhu.ba.yoshikoWrapper.gui; + +import javax.swing.JLabel; + +public class LibStatusPanel extends JLabel { + + /** + * + */ + private static final long serialVersionUID = 6178348169993497344L; + + public void setStyle(boolean libraryLoaded) { + if(libraryLoaded) { + this.setText("YOSHIKO LOADED: TRUE"); + } + else { + this.setText("YOSHIKO LOADED: FALSE"); + } + } + +} diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanel.java index 99bc852..f1e511d 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanel.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanel.java @@ -1,13 +1,18 @@ package de.hhu.ba.yoshikoWrapper.gui; import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import javax.swing.Icon; +import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JPanel; import org.cytoscape.application.swing.CytoPanelComponent; import org.cytoscape.application.swing.CytoPanelName; +import de.hhu.ba.yoshikoWrapper.core.YoshikoInterface; + /**This class describes the Swing Panel that the user interacts with in cytoscape * @author Philipp Spohr, Aug 6, 2017 * @@ -18,16 +23,41 @@ public class MainPanel extends JPanel implements CytoPanelComponent { * Unique identifier for serialization */ private static final long serialVersionUID = 6214827920591046457L; - + + //SYMBOLIC LINKS + private YoshikoInterface yoshikoInterface = YoshikoInterface.getInstance(); + private MainPanel self = this; //for lambda function references + //SWING COMPONENTS + + private LibStatusPanel libStatusPanel; + private JButton searchLibButton; /** * Main constructor, creates a new Panel and intializes subcomponents */ public MainPanel() { - JFileChooser yoshikoNativeChooser = new JFileChooser(); + //SWING COMPONENT INITIALIZATION + + libStatusPanel = new LibStatusPanel(); + libStatusPanel.setStyle(yoshikoInterface.isLibraryLoaded()); + this.add(libStatusPanel); + + searchLibButton = new JButton("SHOW YOSHIKO LIB"); + searchLibButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + final YLibChooser c = new YLibChooser(); + int returnVal = c.showOpenDialog(self); + if (returnVal == JFileChooser.APPROVE_OPTION) { + yoshikoInterface.loadLibrary(c.getSelectedFile().getAbsolutePath()); + } + } + + }); + this.add(searchLibButton); - this.add(yoshikoNativeChooser); this.setVisible(true); } diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/internal/MainPanelAction.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanelAction.java similarity index 92% rename from src/main/java/de/hhu/ba/yoshikoWrapper/internal/MainPanelAction.java rename to src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanelAction.java index 42f3103..34b8cb7 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/internal/MainPanelAction.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanelAction.java @@ -1,4 +1,4 @@ -package de.hhu.ba.yoshikoWrapper.internal; +package de.hhu.ba.yoshikoWrapper.gui; import java.awt.event.ActionEvent; @@ -7,8 +7,6 @@ import org.cytoscape.application.swing.CySwingApplication; //import org.cytoscape.application.swing.CytoPanel; //import org.cytoscape.application.swing.CytoPanelName; -import de.hhu.ba.yoshikoWrapper.gui.MainPanel; - public class MainPanelAction extends AbstractCyAction { /** diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YLibChooser.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YLibChooser.java new file mode 100644 index 0000000..176ec96 --- /dev/null +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YLibChooser.java @@ -0,0 +1,39 @@ +package de.hhu.ba.yoshikoWrapper.gui; + +import java.io.File; + +import javax.swing.JFileChooser; +import javax.swing.filechooser.FileFilter; + +/**Implementation of the JFileChooser that limits choices to shared library + * TODO: Perform basic sanity checks on the selected file (Checksum?) + * @author Philipp Spohr, Aug 6, 2017 + * + */ +public class YLibChooser extends JFileChooser { + /** + * + */ + private static final long serialVersionUID = -2528894543739757962L; + + /** + * Default constructor + */ + public YLibChooser() { + super(); + this.setFileFilter(new FileFilter() { + + @Override + public boolean accept(File f) { + //TODO + return true; + } + + @Override + public String getDescription() { + return "Compiled Yoshiko-Libraries"; + } + + }); + } +} diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/package-info.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/package-info.java new file mode 100644 index 0000000..312d919 --- /dev/null +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/package-info.java @@ -0,0 +1,8 @@ +/** + * + */ +/** + * @author Philipp Spohr, Aug 6, 2017 + * + */ +package de.hhu.ba.yoshikoWrapper.gui; \ No newline at end of file -- GitLab