/* * TextEditor.java * * Created on 2004/08/19, 18:16 */ package xone_sample.jws; import com.fiverworks.xone.model.XoneClass; import com.fiverworks.xone.model.XoneInstance; import com.fiverworks.xone.model.XoneModel; import com.fiverworks.xone.model.XoneNode; import com.fiverworks.xone.model.XoneObject; import com.fiverworks.xone.model.XoneUser; import com.fiverworks.xone.mw.MwMain; import com.fiverworks.xone.tools.man.ObjectChooser; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.sql.Timestamp; import javax.swing.JFileChooser; import javax.swing.JFrame; public class TextEditor extends JFrame { /** Creates new form TextEditor */ public TextEditor() { initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents jScrollPane1 = new javax.swing.JScrollPane(); textArea = new javax.swing.JTextArea(); menuBar = new javax.swing.JMenuBar(); fileMenu = new javax.swing.JMenu(); openMenuItem = new javax.swing.JMenuItem(); saveMenuItem = new javax.swing.JMenuItem(); loadDBMenuItem = new javax.swing.JMenuItem(); saveDBMenuItem = new javax.swing.JMenuItem(); exitMenuItem = new javax.swing.JMenuItem(); setTitle("TextEditor"); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); jScrollPane1.setViewportView(textArea); getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER); fileMenu.setText("\u30d5\u30a1\u30a4\u30eb"); fileMenu.setFont(new java.awt.Font("Dialog", 0, 12)); openMenuItem.setFont(new java.awt.Font("Dialog", 0, 12)); openMenuItem.setText("\u958b\u304f"); openMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { openMenuItemActionPerformed(evt); } }); fileMenu.add(openMenuItem); saveMenuItem.setFont(new java.awt.Font("Dialog", 0, 12)); saveMenuItem.setText("\u4fdd\u5b58"); saveMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { saveMenuItemActionPerformed(evt); } }); fileMenu.add(saveMenuItem); loadDBMenuItem.setFont(new java.awt.Font("Dialog", 0, 12)); loadDBMenuItem.setText("\u30b5\u30fc\u30d0\u304b\u3089\u8aad\u307f\u8fbc\u307f"); loadDBMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { loadDBMenuItemActionPerformed(evt); } }); fileMenu.add(loadDBMenuItem); saveDBMenuItem.setFont(new java.awt.Font("Dialog", 0, 12)); saveDBMenuItem.setText("\u30b5\u30fc\u30d0\u306b\u4fdd\u5b58"); saveDBMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { saveDBMenuItemActionPerformed(evt); } }); fileMenu.add(saveDBMenuItem); exitMenuItem.setFont(new java.awt.Font("Dialog", 0, 12)); exitMenuItem.setText("\u7d42\u4e86"); exitMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { exitMenuItemActionPerformed(evt); } }); fileMenu.add(exitMenuItem); menuBar.add(fileMenu); setJMenuBar(menuBar); pack(); }//GEN-END:initComponents private void saveDBMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveDBMenuItemActionPerformed // 処理コードをここに追加します: try { int result = this.oc.showSaveDialog(); if (result == ObjectChooser.APPROVE) { String objPath = oc.getSelectedObject(); String objName = XoneNode.getLastName(objPath); String objParent = XoneNode.getParent(objPath); // Xoneのインスタンスを作る XoneInstance xi = XoneModel.newXoneInstance(this.textFileClass, objName); xi.setElementValue("name", this.currentFileName); xi.setElementValue("parent", this.currentFileParent); Timestamp ts = new Timestamp(System.currentTimeMillis()); xi.setElementValue("lastModified", ts.toString()); xi.setElementValue("length", Integer.toString(this.textArea.getText().length())); xi.setElementValue("body", this.textArea.getText()); int res = mwMain.save(objParent, new XoneObject[]{xi}, oc.getWriteMode()); } } catch (Exception ex) { ex.printStackTrace(); return; } }//GEN-LAST:event_saveDBMenuItemActionPerformed private void saveMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveMenuItemActionPerformed // 処理コードをここに追加します: int result = jfc.showSaveDialog(this); if (result == JFileChooser.APPROVE_OPTION) { File file = jfc.getSelectedFile(); BufferedWriter out = null; try { out = new BufferedWriter(new FileWriter(file)); out.write(this.textArea.getText()); this.currentFileName = file.getName(); this.currentFileParent = file.getParent(); } catch (Exception ex) { ex.printStackTrace(); return; } finally { if (out != null) { try { out.close(); } catch (Exception ex) {} } } } }//GEN-LAST:event_saveMenuItemActionPerformed private void openMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openMenuItemActionPerformed // 処理コードをここに追加します: int result = jfc.showOpenDialog(this); if (result == JFileChooser.APPROVE_OPTION) { File file = jfc.getSelectedFile(); BufferedReader in = null; try { in = new BufferedReader(new FileReader(file)); this.textArea.setText(""); String str = in.readLine(); while (str != null) { this.textArea.append(str + "\n"); str = in.readLine(); } this.currentFileName = file.getName(); this.currentFileParent = file.getParent(); } catch (Exception ex) { ex.printStackTrace(); return; } finally { if (in != null) { try { in.close(); } catch (Exception ex) {} } } } }//GEN-LAST:event_openMenuItemActionPerformed private void loadDBMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadDBMenuItemActionPerformed // 処理コードをここに追加します: try { int result = this.oc.showOpenDialog(false); if (result == ObjectChooser.APPROVE) { String objName = oc.getSelectedObject(); XoneObject[] xos = mwMain.load(new String[]{objName}); if (xos == null || xos.length != 1) return; XoneObject xo = xos[0]; if (!xo.getClassName().equals(TEXT_FILE_CLASS)) return; this.textArea.setText(xo.getElementValue("body")); this.currentFileName = xo.getElementValue("name"); this.currentFileParent = xo.getElementValue("parent"); } } catch (Exception ex) { ex.printStackTrace(); return; } }//GEN-LAST:event_loadDBMenuItemActionPerformed private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed exit(); }//GEN-LAST:event_exitMenuItemActionPerformed /** Exit the Application */ private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm exit(); }//GEN-LAST:event_exitForm // logout private void exit() { if (mwMain.isLogin()) mwMain.logout(); System.exit(0); } // override public void show() { super.setSize(500, 400); mwMain = new MwMain(); try { XoneUser xu = mwMain.showLoginDialog(this); } catch (Exception ex) { ex.printStackTrace(); System.exit(0); } // loginしていなければ終了 if (!mwMain.isLogin()) System.exit(0); // TextFileクラスを読み込んでおく try { XoneObject[] xos = mwMain.load(new String[]{TEXT_FILE_CLASS}); if (xos == null || xos.length != 1) exit(); this.textFileClass = (XoneClass)xos[0]; // 上の行は下でもよい // this.textFileClass = Cache.getInstance().getXoneClass(TEXT_FILE_CLASS); } catch (Exception ex) { ex.printStackTrace(); this.exit(); } // ObjectChooserとJFileChooserの準備 oc = new ObjectChooser(this, mwMain); oc.setCurrentFolder(INSTANCES_FOLDER); jfc = new JFileChooser(); jfc.setMultiSelectionEnabled(false); super.show(); } /** * @param args the command line arguments */ public static void main(String args[]) { new TextEditor().show(); } // 変数宣言 - 編集不可//GEN-BEGIN:variables private javax.swing.JMenuItem exitMenuItem; private javax.swing.JMenu fileMenu; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JMenuItem loadDBMenuItem; private javax.swing.JMenuBar menuBar; private javax.swing.JMenuItem openMenuItem; private javax.swing.JMenuItem saveDBMenuItem; private javax.swing.JMenuItem saveMenuItem; private javax.swing.JTextArea textArea; // 変数宣言の終わり//GEN-END:variables private MwMain mwMain; private ObjectChooser oc; private XoneClass textFileClass; private JFileChooser jfc; private String currentFileName; private String currentFileParent; private static final String TEXT_FILE_CLASS = "root/classes/TextFile"; private static final String INSTANCES_FOLDER = "root/instances"; }