diff --git a/lib/bsh-2.0b5.jar b/lib/bsh-2.0b5.jar new file mode 100644 index 0000000..e326510 Binary files /dev/null and b/lib/bsh-2.0b5.jar differ diff --git a/nbproject/project.properties b/nbproject/project.properties index d83890d..1169d13 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -35,6 +35,7 @@ endorsed.classpath= excludes= file.reference.autocomplete-2.5.4.jar=lib/autocomplete-2.5.4.jar file.reference.beautyeye_lnf.jar=lib/beautyeye_lnf.jar +file.reference.bsh-2.0b5.jar=lib\\bsh-2.0b5.jar file.reference.commons-codec-1.9.jar=lib/commons-codec-1.9.jar file.reference.commons-logging-1.2.jar=lib/commons-logging-1.2.jar file.reference.flamingo-6.3.jar=lib/flamingo-6.3.jar @@ -90,7 +91,8 @@ javac.classpath=\ ${file.reference.httpmime-4.5.jar}:\ ${file.reference.jna-4.1.0.jar}:\ ${file.reference.jna-platform-4.1.0.jar}:\ - ${file.reference.jython-standalone-2.7.0.jar} + ${file.reference.jython-standalone-2.7.0.jar}:\ + ${file.reference.bsh-2.0b5.jar} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false diff --git a/src/net/apocalypselabs/symat/CodeRunner.java b/src/net/apocalypselabs/symat/CodeRunner.java index 87ff6af..bd1058d 100644 --- a/src/net/apocalypselabs/symat/CodeRunner.java +++ b/src/net/apocalypselabs/symat/CodeRunner.java @@ -92,7 +92,7 @@ public class CodeRunner { } public CodeRunner(int lang) { - this(lang == 0 ? "js" : "py"); + this(lang == 0 ? "js" : (lang == 2 ? "ja" : "py")); } public CodeRunner(String lang) { @@ -137,6 +137,26 @@ public class CodeRunner { initError(ex); } break; + case "java": + case "ja": + case "beanshell": + case "bsh": + scriptLang = "java"; + se = new ScriptEngineManager().getEngineByName("java"); + try { + // Add custom functions. + /*se.eval("importClass(net.apocalypselabs.symat.Functions);" + + "SyMAT_Functions = new net.apocalypselabs.symat.Functions();" + + "SyMAT_Functions.setLang('js');\n" + + getFunctions("js") + + loadToolkits());*/ + // Allow engine access from scripts. + se.put("engine", se); + attachWriters(); + } catch (Exception ex) { + initError(ex); + } + break; default: throw new UnsupportedOperationException("Script language " + lang + " not supported."); } @@ -298,17 +318,20 @@ public class CodeRunner { private String getFunctions(String lang) { String text = ""; - try { - BufferedReader reader = new BufferedReader( - new InputStreamReader( - CodeRunner.class - .getResourceAsStream("functions." + lang))); - String line; - while ((line = reader.readLine()) != null) { - text += line + "\n"; + if (!lang.equals("java")) { + try { + BufferedReader reader = new BufferedReader( + new InputStreamReader( + CodeRunner.class + .getResourceAsStream("functions." + lang))); + String line; + while ((line = reader.readLine()) != null) { + text += line + "\n"; + } + } catch (Exception e) { } - } catch (Exception e) { + return text; } - return text; + return ""; } } diff --git a/src/net/apocalypselabs/symat/Editor.form b/src/net/apocalypselabs/symat/Editor.form index 4781cb4..18ea93c 100644 --- a/src/net/apocalypselabs/symat/Editor.form +++ b/src/net/apocalypselabs/symat/Editor.form @@ -274,6 +274,17 @@ + + + + + + + + + + + diff --git a/src/net/apocalypselabs/symat/Editor.java b/src/net/apocalypselabs/symat/Editor.java index 27f2124..3c36c4e 100644 --- a/src/net/apocalypselabs/symat/Editor.java +++ b/src/net/apocalypselabs/symat/Editor.java @@ -96,6 +96,10 @@ public class Editor extends javax.swing.JInternalFrame { private AutoCompletion jsac = new AutoCompletion(jscomp); private AutoCompletion pyac = new AutoCompletion(pycomp); + public static final int JAVASCRIPT = 1; + public static final int PYTHON = 2; + public static final int JAVA = 3; + private File filedata; private int font_size = 12; @@ -103,14 +107,26 @@ public class Editor extends javax.swing.JInternalFrame { /** * @param python If true sets to Python */ + @Deprecated public Editor(boolean python) { + this((python ? PYTHON : JAVASCRIPT)); + } + + /** + * @param lang Script language: 1 = javascript, 2 = python, 3 = java + */ + public Editor(int lang) { initComponents(); - FileFilter filter = new FileNameExtensionFilter("JavaScript (syjs, js)", "syjs", "js"); + FileFilter filter = new FileNameExtensionFilter("All SyMAT Files", "syjs", "js", "sypy", "py", "syjava", "java"); fc.setFileFilter(filter); fc.addChoosableFileFilter(filter); + fc.addChoosableFileFilter(new FileNameExtensionFilter( + "JavaScript (syjs, js)", "syjs", "js")); fc.addChoosableFileFilter(new FileNameExtensionFilter( "Python (sypy, py)", "sypy", "py")); + fc.addChoosableFileFilter(new FileNameExtensionFilter( + "Java (syjava, java)", "syjava", "java")); fc.addChoosableFileFilter(new FileNameExtensionFilter( "Plain Text (txt, text)", "txt", "text")); @@ -136,39 +152,49 @@ public class Editor extends javax.swing.JInternalFrame { } }); - if (python) { + if (lang == PYTHON) { pyac.install(codeBox); javascriptOption.setSelected(false); pythonOption.setSelected(true); codeBox.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PYTHON); + } else if (lang == JAVA) { + codeBox.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA); } else { jsac.install(codeBox); codeBox.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT); } - sp.setVisible(true); - codeBox.setVisible(true); + + sp.setVisible( + true); + codeBox.setVisible( + true); codeBox.requestFocus(); - codeBox.getDocument().addDocumentListener(new DocumentListener() { - @Override - public void changedUpdate(DocumentEvent e) { - changed(); - } + codeBox.getDocument() + .addDocumentListener(new DocumentListener() { + @Override + public void changedUpdate(DocumentEvent e + ) { + changed(); + } - @Override - public void removeUpdate(DocumentEvent e) { - changed(); - } + @Override + public void removeUpdate(DocumentEvent e + ) { + changed(); + } - @Override - public void insertUpdate(DocumentEvent e) { - changed(); - } + @Override + public void insertUpdate(DocumentEvent e + ) { + changed(); + } - public void changed() { - fileChanged = true; - } - }); + public void changed() { + fileChanged = true; + } + } + ); } /** @@ -200,16 +226,18 @@ public class Editor extends javax.swing.JInternalFrame { * * @param openfile Nothing to see here, move along. */ - public Editor(int openfile) { + public Editor(long openfile) { this(""); openMenuActionPerformed(null); + } private void setEditorTheme(String themeName) { try { Theme theme = Theme.load( - Editor.class. + Editor.class + . getResourceAsStream( "resources/" + themeName + ".xml"), new Font(Font.MONOSPACED, Font.PLAIN, font_size)); @@ -273,6 +301,7 @@ public class Editor extends javax.swing.JInternalFrame { codeLangMenu = new javax.swing.JMenu(); javascriptOption = new javax.swing.JRadioButtonMenuItem(); pythonOption = new javax.swing.JRadioButtonMenuItem(); + javaOption = new javax.swing.JRadioButtonMenuItem(); jMenuItem4.setText("jMenuItem4"); @@ -546,6 +575,15 @@ public class Editor extends javax.swing.JInternalFrame { }); codeLangMenu.add(pythonOption); + langBtnGroup.add(javaOption); + javaOption.setText("Java"); + javaOption.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + javaOptionActionPerformed(evt); + } + }); + codeLangMenu.add(javaOption); + runMenu.add(codeLangMenu); jMenuBar1.add(runMenu); @@ -571,10 +609,11 @@ public class Editor extends javax.swing.JInternalFrame { if (r == JFileChooser.APPROVE_OPTION) { try { File f = fc.getSelectedFile(); - codeBox.setText(FileUtils.readFile(f.toString())); - isSaved = true; - filedata = f; - setTitle(f.getName()); + /*codeBox.setText(FileUtils.readFile(f.toString())); + isSaved = true; + filedata = f;*/ + openString(FileUtils.readFile(f.getAbsolutePath()), + f.getAbsolutePath(), true); } catch (IOException ex) { JOptionPane.showInternalMessageDialog(this, "Error: Cannot load file: " + ex.getMessage()); @@ -612,15 +651,24 @@ public class Editor extends javax.swing.JInternalFrame { isSaved = saved; fileChanged = false; setTitle((new File(file)).getName()); - if (file.matches(".*\\.(js|mls|symt|syjs)")) { + if (file.matches(".*\\.(js|mls|symt|syjs)")) { // JavaScript javascriptOption.setSelected(true); pythonOption.setSelected(false); + javaOption.setSelected(false); codeBox.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT); pyac.uninstall(); jsac.install(codeBox); - } else if (file.matches(".*\\.(sypy|py)")) { + } else if (file.matches(".*\\.(syjava|java)")) { // Java + javascriptOption.setSelected(false); + pythonOption.setSelected(false); + javaOption.setSelected(true); + codeBox.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA); + //pyac.uninstall(); + //jsac.install(codeBox); + } else if (file.matches(".*\\.(sypy|py)")) { // Python javascriptOption.setSelected(false); pythonOption.setSelected(true); + javaOption.setSelected(false); codeBox.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PYTHON); jsac.uninstall(); pyac.install(codeBox); @@ -673,6 +721,9 @@ public class Editor extends javax.swing.JInternalFrame { } else if (pythonOption.isSelected()) { rt = new RunThread("python"); rt.start(); + } else if (javaOption.isSelected()) { + rt = new RunThread("java"); + rt.start(); } }//GEN-LAST:event_runCodeBtnActionPerformed @@ -743,6 +794,7 @@ public class Editor extends javax.swing.JInternalFrame { uo.start(); cr.evalCode(script); uo.kill(); + } private class UpdateOutput extends Thread { @@ -855,7 +907,7 @@ public class Editor extends javax.swing.JInternalFrame { } private void exportMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exportMenuActionPerformed - String lang = pythonOption.isSelected() ? "python" : "js"; + String lang = pythonOption.isSelected() ? "python" : (javaOption.isSelected() ? "java" : "js"); Main.loadFrame(new CodeExport(codeBox.getText(), lang, outputBox.getText())); }//GEN-LAST:event_exportMenuActionPerformed @@ -928,7 +980,7 @@ public class Editor extends javax.swing.JInternalFrame { private void packPluginMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_packPluginMenuActionPerformed Main.loadFrame(new PackagePlugin(codeBox.getText(), - javascriptOption.isSelected() ? 0 : 1 + javascriptOption.isSelected() ? 0 : pythonOption.isSelected() ? 1 : 2 )); }//GEN-LAST:event_packPluginMenuActionPerformed @@ -942,6 +994,12 @@ public class Editor extends javax.swing.JInternalFrame { + "\n=============\n"); }//GEN-LAST:event_killButtonActionPerformed + private void javaOptionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_javaOptionActionPerformed + codeBox.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA); + //pyac.uninstall(); + //jsac.install(codeBox); + }//GEN-LAST:event_javaOptionActionPerformed + private void createShared(String id) { try { String padid = Pads.genPad(id, codeBox.getText()); @@ -972,6 +1030,7 @@ public class Editor extends javax.swing.JInternalFrame { ext = "py"; } String text = ""; + try { BufferedReader reader = new BufferedReader( new InputStreamReader( @@ -1030,6 +1089,7 @@ public class Editor extends javax.swing.JInternalFrame { private javax.swing.JScrollPane jScrollPane1; private javax.swing.JPopupMenu.Separator jSeparator1; private javax.swing.JSplitPane jSplitPane1; + private javax.swing.JRadioButtonMenuItem javaOption; private javax.swing.JRadioButtonMenuItem javascriptOption; private javax.swing.JMenuItem killButton; private javax.swing.ButtonGroup langBtnGroup; diff --git a/src/net/apocalypselabs/symat/InstallPlugin.java b/src/net/apocalypselabs/symat/InstallPlugin.java index 81b5b44..1dcc6cb 100644 --- a/src/net/apocalypselabs/symat/InstallPlugin.java +++ b/src/net/apocalypselabs/symat/InstallPlugin.java @@ -62,6 +62,7 @@ import javax.swing.JOptionPane; import javax.swing.filechooser.FileNameExtensionFilter; import net.apocalypselabs.symat.plugin.LoadPlugin; import net.apocalypselabs.symat.plugin.Plugin; +import net.apocalypselabs.symat.plugin.PluginParent; import org.python.google.common.io.Files; /** diff --git a/src/net/apocalypselabs/symat/Interpreter.form b/src/net/apocalypselabs/symat/Interpreter.form index b6449f7..63cd037 100644 --- a/src/net/apocalypselabs/symat/Interpreter.form +++ b/src/net/apocalypselabs/symat/Interpreter.form @@ -72,6 +72,17 @@ + + + + + + + + + + + diff --git a/src/net/apocalypselabs/symat/Interpreter.java b/src/net/apocalypselabs/symat/Interpreter.java index 6f664cf..d0d15e7 100644 --- a/src/net/apocalypselabs/symat/Interpreter.java +++ b/src/net/apocalypselabs/symat/Interpreter.java @@ -115,8 +115,14 @@ public class Interpreter extends javax.swing.JInternalFrame { if (lang.equals("python")) { javascriptMenu.setSelected(false); pythonMenu.setSelected(true); + javaMenu.setSelected(false); pyac.install(inputBox); setTitle("Shell [python]"); + } else if (lang.equals("java")) { + setTitle("Shell [java]"); + javascriptMenu.setSelected(false); + pythonMenu.setSelected(false); + javaMenu.setSelected(true); } else { jsac.install(inputBox); setTitle("Shell [javascript]"); @@ -167,6 +173,7 @@ public class Interpreter extends javax.swing.JInternalFrame { jMenu1 = new javax.swing.JMenu(); javascriptMenu = new javax.swing.JRadioButtonMenuItem(); pythonMenu = new javax.swing.JRadioButtonMenuItem(); + javaMenu = new javax.swing.JRadioButtonMenuItem(); setDefaultLang = new javax.swing.JMenuItem(); setClosable(true); @@ -279,6 +286,15 @@ public class Interpreter extends javax.swing.JInternalFrame { }); jMenu1.add(pythonMenu); + langGroup.add(javaMenu); + javaMenu.setText("Java"); + javaMenu.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + javaMenuActionPerformed(evt); + } + }); + jMenu1.add(javaMenu); + langMenu.add(jMenu1); setDefaultLang.setText("Set as default"); @@ -407,6 +423,8 @@ public class Interpreter extends javax.swing.JInternalFrame { FileFilter filter; if (javascriptMenu.isSelected()) { filter = new FileNameExtensionFilter("SyMAT JavaScript (.syjs)", "syjs"); + } else if (javaMenu.isSelected()) { + filter = new FileNameExtensionFilter("SyMAT Java (.syjava)", "syjava"); } else { filter = new FileNameExtensionFilter("SyMAT Python (.sypy)", "sypy"); } @@ -436,6 +454,13 @@ public class Interpreter extends javax.swing.JInternalFrame { inputBox.requestFocusInWindow(); }//GEN-LAST:event_formFocusGained + private void javaMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_javaMenuActionPerformed + if (!lang.equals("java")) { + Main.loadFrame(new Interpreter("java")); + dispose(); + } + }//GEN-LAST:event_javaMenuActionPerformed + private void doRunCode() { String code = inputBox.getText(); commandsForExport += code + "\n"; @@ -551,6 +576,7 @@ public class Interpreter extends javax.swing.JInternalFrame { private javax.swing.JMenu jMenu4; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JRadioButtonMenuItem javaMenu; private javax.swing.JRadioButtonMenuItem javascriptMenu; private javax.swing.ButtonGroup langGroup; private javax.swing.JMenu langMenu; diff --git a/src/net/apocalypselabs/symat/Main.java b/src/net/apocalypselabs/symat/Main.java index d4f8615..d705c32 100644 --- a/src/net/apocalypselabs/symat/Main.java +++ b/src/net/apocalypselabs/symat/Main.java @@ -55,7 +55,6 @@ */ package net.apocalypselabs.symat; -import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.FontFormatException; @@ -64,7 +63,6 @@ import java.awt.Graphics; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.io.FilenameFilter; @@ -108,7 +106,7 @@ public class Main extends JRibbonFrame { /** * Version name, as it should be displayed. */ - public static final String VERSION_NAME = "2.0.2"; + public static final String VERSION_NAME = "2.1"; /** * The word "SyMAT". @@ -121,7 +119,7 @@ public class Main extends JRibbonFrame { /** * Version number, for updates and //needs in scripts */ - public static final double APP_CODE = 23; + public static final double APP_CODE = 24; /** * Base URL for building API calls */ @@ -133,7 +131,7 @@ public class Main extends JRibbonFrame { /** * Ubuntu font. Loaded from Ubuntu-R.ttf in the default package at runtime. - * May become default sans-serif if something bad happens. + * Becomes default sans-serif if something bad happens. */ public static Font ubuntuRegular; public static boolean skipPython = false; // Skip python init on start? diff --git a/src/net/apocalypselabs/symat/PackagePlugin.form b/src/net/apocalypselabs/symat/PackagePlugin.form index ebd0008..e0c0a66 100644 --- a/src/net/apocalypselabs/symat/PackagePlugin.form +++ b/src/net/apocalypselabs/symat/PackagePlugin.form @@ -338,9 +338,10 @@ - + + diff --git a/src/net/apocalypselabs/symat/PackagePlugin.java b/src/net/apocalypselabs/symat/PackagePlugin.java index 8e9503d..0f9692d 100644 --- a/src/net/apocalypselabs/symat/PackagePlugin.java +++ b/src/net/apocalypselabs/symat/PackagePlugin.java @@ -293,7 +293,7 @@ public class PackagePlugin extends javax.swing.JInternalFrame { jLabel8.setText("Language:"); - langSelect.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "JavaScript", "Python" })); + langSelect.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "JavaScript", "Python", "Java" })); codeBox.setColumns(20); codeBox.setRows(5); diff --git a/src/net/apocalypselabs/symat/Pads.java b/src/net/apocalypselabs/symat/Pads.java index a452d33..002d524 100644 --- a/src/net/apocalypselabs/symat/Pads.java +++ b/src/net/apocalypselabs/symat/Pads.java @@ -55,7 +55,6 @@ */ package net.apocalypselabs.symat; -import java.awt.Color; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; diff --git a/src/net/apocalypselabs/symat/help/licenses.html b/src/net/apocalypselabs/symat/help/licenses.html index d1dae68..9fb86c9 100644 --- a/src/net/apocalypselabs/symat/help/licenses.html +++ b/src/net/apocalypselabs/symat/help/licenses.html @@ -774,7 +774,7 @@ The code released under the CDDL shall be governed by the laws of the State of C OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



-

iTextPDF, Symja (core):

+

iTextPDF, Symja (core), BeanShell:

GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007

diff --git a/src/net/apocalypselabs/symat/plugin/LoadPlugin.java b/src/net/apocalypselabs/symat/plugin/LoadPlugin.java index 10dc3ab..264f4a1 100644 --- a/src/net/apocalypselabs/symat/plugin/LoadPlugin.java +++ b/src/net/apocalypselabs/symat/plugin/LoadPlugin.java @@ -62,9 +62,9 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InvalidClassException; import java.io.ObjectInputStream; import net.apocalypselabs.symat.CodeRunner; -import net.apocalypselabs.symat.Debug; import net.apocalypselabs.symat.Main; import org.pushingpixels.flamingo.api.common.JCommandButton; import org.pushingpixels.flamingo.api.common.JCommandToggleButton; @@ -79,9 +79,9 @@ import org.pushingpixels.flamingo.api.common.icon.ResizableIcon; */ public class LoadPlugin { - private Plugin p = new Plugin(); + private Plugin p; - public LoadPlugin(File f) throws FileNotFoundException, IOException, ClassNotFoundException { + public LoadPlugin(File f) throws FileNotFoundException, IOException, ClassNotFoundException, InvalidClassException { FileInputStream fin = new FileInputStream(f); ObjectInputStream ois = new ObjectInputStream(fin); p = (Plugin) ois.readObject(); diff --git a/src/net/apocalypselabs/symat/plugin/Plugin.java b/src/net/apocalypselabs/symat/plugin/Plugin.java index 40e838a..4660093 100644 --- a/src/net/apocalypselabs/symat/plugin/Plugin.java +++ b/src/net/apocalypselabs/symat/plugin/Plugin.java @@ -61,12 +61,13 @@ import javax.swing.ImageIcon; /** * Plugin container class. */ -public class Plugin implements Serializable { +public class Plugin extends PluginParent implements Serializable { private static final long serialVersionUID = 13371L; public final int LANG_JS = 0; public final int LANG_PY = 1; + public final int LANG_JAVA = 2; private ImageIcon icon; private String packageName = ""; diff --git a/src/net/apocalypselabs/symat/plugin/PluginParent.java b/src/net/apocalypselabs/symat/plugin/PluginParent.java new file mode 100644 index 0000000..3c590ae --- /dev/null +++ b/src/net/apocalypselabs/symat/plugin/PluginParent.java @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2015, Netsyms Technologies + * All rights reserved. + * + * + * CODE LICENSE ========== + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * 4. You adhere to the Media License detailed below. If you do not, this license + * is automatically revoked and you must purge all copies of the software you + * possess, in source or binary form. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * MEDIA LICENSE ========== + * All images and other graphical files ("media") included with this + * software are copyright (c) 2015 Netsyms Technologies. You may not distribute + * the graphics or any program, source code repository, or other digital storage + * media containing them without permission from Netsyms Technologies. + * This ban on distribution only applies to publicly available systems. + * A password-protected network file share, USB drive, or other storage scheme that + * cannot be easily accessed by the public is generally allowed. If in doubt, + * contact Netsyms Technologies. If Netsyms Technologies allows or denies + * you permission, that decision is considered final and binding. + * + * You may only use the media for personal, + * non-commercial, non-educational use unless: + * 1, You have paid for the software and media via the SyMAT website, + * or 2, you are using it as part of the 15-day trial period. + * Other uses are prohibited without permission. + * If any part of this license is deemed unenforcable, the remainder + * of the license remains in full effect. + */ +package net.apocalypselabs.symat.plugin; + +import javax.swing.ImageIcon; + +/** + * + * @author Skylar + */ +public abstract class PluginParent { + + public abstract String getVersion(); + + public abstract void setVersion(String v); + + public abstract String getPackage(); + + public abstract void setPackage(String pkg); + + public abstract String getAuthor(); + + public abstract void setAuthor(String s); + + public abstract String getWebsite(); + + public abstract void setWebsite(String url); + + public abstract String getOther(); + + public abstract void setOther(String o); + + public abstract ImageIcon getIcon(); + + public abstract void setIcon(ImageIcon i); + + public abstract String getScript(); + + public abstract void setScript(String s); + + public abstract String getTitle(); + + public abstract void setTitle(String n); + + public abstract String getDesc(); + + public abstract void setDesc(String d); + + public abstract String getLongTitle(); + + public abstract void setLongTitle(String t); + + public abstract int getLang(); + +}