11 import java.awt.BorderLayout
12 import java.awt.Dimension
14 import java.io.BufferedReader
16 import java.io.FileNotFoundException
17 import java.io.FileReader
18 import java.io.FileWriter
19 import java.io.IOException
21 import javax.swing.JFileChooser
22 import javax.swing.JPanel
23 import javax.swing.JScrollPane
25 import org.gjt.sp.jedit.EBComponent
26 import org.gjt.sp.jedit.EBMessage
27 import org.gjt.sp.jedit.EditBus
28 import org.gjt.sp.jedit.GUIUtilities
29 import org.gjt.sp.jedit.View
30 import org.gjt.sp.jedit.jEdit
31 import org.gjt.sp.jedit.gui.DefaultFocusComponent
32 import org.gjt.sp.jedit.gui.DockableWindowManager
33 import org.gjt.sp.jedit.msg.PropertiesChanged
34 import org.gjt.sp.util.Log
35 import org.gjt.sp.util.StandardUtilities
41 * Isac - a dockable JPanel, a demonstration of a jEdit plugin.
47 var textArea = new IsacTextArea()
50 val OPTION_PREFIX = "options.isac."
52 private final val serialVersionUID = 6412255692894321789L
54 var filename = "IsacTestFile.txt"
56 var defaultFilename = "IsacTestFile.txt"
58 def focusOnDefaultComponent() {
59 textArea.requestFocus()
62 def getFilename(): String ={
63 val str = this.filename
69 class Isac(view: View, position: String) extends JPanel(new BorderLayout)
71 def floating: Boolean = position.equals(DockableWindowManager.FLOATING)
73 def toolPanel = new IsacToolPanel(this)
76 if (jEdit.getSettingsDirectory() != null) {
77 Isac.filename = jEdit.getProperty(IsacPlugin.OPTION_PREFIX + "filepath")
78 if (Isac.filename == null || Isac.filename.length() == 0) {
79 Isac.filename = new String(jEdit.getSettingsDirectory()
80 + File.separator + "qn.txt")
81 jEdit.setProperty(IsacPlugin.OPTION_PREFIX + "filepath",Isac.filename)
83 Isac.defaultFilename = Isac.filename
86 add(BorderLayout.NORTH, this.toolPanel)
89 this.setPreferredSize(new Dimension(500, 250))
92 Isac.textArea.setFont(IsacOptionPane.makeFont())
94 val pane = new JScrollPane(Isac.textArea)
95 add(BorderLayout.CENTER, pane)
99 def getFilename(): String ={
100 val str = Isac.getFilename()
104 def propertiesChanged() {
105 val propertyFilename = jEdit.getProperty(IsacPlugin.OPTION_PREFIX + "filepath");
106 if (!StandardUtilities.objectsEqual(Isac.defaultFilename, propertyFilename)) {
108 toolPanel.propertiesChanged()
109 Isac.defaultFilename = propertyFilename
110 Isac.filename = Isac.defaultFilename
113 val newFont = IsacOptionPane.makeFont(): Font
114 if (!newFont.equals(Isac.textArea.getFont())) {
115 Isac.textArea.setFont(newFont);
120 override def addNotify() {
122 EditBus.addToBus(this)
127 if (Isac.filename == null || Isac.filename.length() == 0) {
132 val out = new FileWriter(Isac.filename)
133 out.write(Isac.textArea.getText())
138 override def removeNotify() {
141 EditBus.removeFromBus(this)
146 val paths = GUIUtilities.showVFSFileDialog(view, null,
147 JFileChooser.OPEN_DIALOG, false);
148 if (paths != null && !paths(0).equals(Isac.filename)) {
150 Isac.filename = paths(0);
151 toolPanel.propertiesChanged();
158 //GAdei Test view.getEditPane().getTextArea().setText(textArea.getText());
159 view.getEditPane().getTextArea().setText("New Project: Gadei the king! BIIIIIG LOOOOOOOOL")
164 if (Isac.filename == null || Isac.filename.length() == 0)
167 var bf :BufferedReader = null
168 var sb :StringBuffer = null
170 bf = new BufferedReader(new FileReader(Isac.filename))
171 sb = new StringBuffer(2048)
172 var str : String = ""
173 while ((str = bf.readLine()) != null) {
174 sb.append(str).append('\n')
177 Isac.textArea.setText(sb.toString())
181 Log.log(Log.ERROR, Isac, "notepad file " + Isac.filename
182 + " does not exist");