/*
* Copyright (C) 2011 Vinu K.N
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.domainmath.gui.pkg;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import javax.swing.DefaultListModel;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import org.domainmath.gui.MainFrame;
/**
*
* @author Vinu K.N
*/
public class PkgDlg extends javax.swing.JDialog {
private DefaultListModel _model;
private final MainFrame frame;
/** Creates new form UnInstallDlg */
public PkgDlg(MainFrame frame, boolean modal) {
super(frame, modal);
this.frame = frame;
initComponents();
UnLoadButton.setEnabled(true);
UnInstallButton.setEnabled(true);
unloadAllButton.setEnabled(true);
loadButton.setEnabled(true);
loadAllButton.setEnabled(true);
//listButton.setEnabled(false);
String cmd = frame.getOctavePath()+" -qf --eval "+Character.toString('"')+
"OCTAVE_HOME ()"+
Character.toString('"');
String line;
try {
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader br =
new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader br2 =
new BufferedReader(new InputStreamReader(p.getErrorStream()));
line =br.readLine();
String path;
String sep =File.separator;
File f;
File f2[];
String s[];
path= line.substring(line.indexOf('=')+1,line.length()).trim();
f = new File(path+sep+"share"+sep+"octave"+sep+"packages"+sep);
f2 =f.listFiles();
_model = new DefaultListModel();
pkgList.setModel(_model);
for( int i=0; i<f2.length; i++) {
_model.addElement(f2[i].getName());
}
while((line=br2.readLine()) != null) {
System.out.println(line);
}
}
catch(Exception ex) {
}
}
/** 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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
pkgList = new javax.swing.JList();
UnLoadButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
listButton = new javax.swing.JButton();
unloadAllButton = new javax.swing.JButton();
UnInstallButton = new javax.swing.JButton();
loadButton = new javax.swing.JButton();
loadAllButton = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
pathField = new javax.swing.JTextField();
browseButton = new javax.swing.JButton();
jLabel2 = new javax.swing.JLabel();
optionsCombo = new javax.swing.JComboBox();
genButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle(" Package");
setName("UnInstdialog"); // NOI18N
pkgList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
pkgList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
pkgListValueChanged(evt);
}
});
jScrollPane1.setViewportView(pkgList);
UnLoadButton.setText("Unload");
UnLoadButton.setEnabled(false);
UnLoadButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
UnLoadButtonActionPerformed(evt);
}
});
cancelButton.setText("Close");
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancelButtonActionPerformed(evt);
}
});
listButton.setText("List");
listButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
listButtonActionPerformed(evt);
}
});
unloadAllButton.setText("Unload All");
unloadAllButton.setEnabled(false);
unloadAllButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
unloadAllButtonActionPerformed(evt);
}
});
UnInstallButton.setText("Uninstall");
UnInstallButton.setEnabled(false);
UnInstallButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
UnInstallButtonActionPerformed(evt);
}
});
loadButton.setText("Load");
loadButton.setEnabled(false);
loadButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
loadButtonActionPerformed(evt);
}
});
loadAllButton.setText("Load All");
loadAllButton.setEnabled(false);
loadAllButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
loadAllButtonActionPerformed(evt);
}
});
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Generate doc"));
jLabel1.setText("Output directory:");
browseButton.setText("Browse");
browseButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
browseButtonActionPerformed(evt);
}
});
jLabel2.setText("Options:");
optionsCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "octave-forge", "octave", "docbrowser" }));
genButton.setText("Generate");
genButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
genButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(pathField, javax.swing.GroupLayout.DEFAULT_SIZE, 331, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(optionsCombo, 0, 286, Short.MAX_VALUE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(genButton, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(browseButton, javax.swing.GroupLayout.Alignment.TRAILING)))
);
jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {browseButton, genButton});
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(pathField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(browseButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(optionsCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(genButton))
.addContainerGap(25, Short.MAX_VALUE))
);
jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {browseButton, genButton});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 345, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(UnInstallButton)
.addComponent(listButton)
.addComponent(cancelButton))
.addComponent(loadAllButton))
.addComponent(loadButton))
.addComponent(UnLoadButton))
.addComponent(unloadAllButton))))
.addContainerGap())
);
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {UnInstallButton, UnLoadButton, cancelButton, listButton, loadAllButton, loadButton, unloadAllButton});
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 345, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(listButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(UnInstallButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 142, Short.MAX_VALUE)
.addComponent(loadButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(loadAllButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(UnLoadButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(unloadAllButton)
.addGap(18, 18, 18)
.addComponent(cancelButton)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(26, 26, 26))
);
layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {UnInstallButton, UnLoadButton, cancelButton, listButton, loadAllButton, loadButton, unloadAllButton});
pack();
}// </editor-fold>//GEN-END:initComponents
private void listButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_listButtonActionPerformed
}//GEN-LAST:event_listButtonActionPerformed
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
dispose();
}//GEN-LAST:event_cancelButtonActionPerformed
private void UnLoadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_UnLoadButtonActionPerformed
try {
int i =JOptionPane.showConfirmDialog(frame,
"Unload?\n"+_model.getElementAt(pkgList.getSelectedIndex()).toString(), "Domain", JOptionPane.YES_NO_OPTION);
if(i == JOptionPane.YES_OPTION){
String pkg = _model.getElementAt(pkgList.getSelectedIndex()).toString();
String comd ="pkg unload "+pkg.substring(0, pkg.indexOf("-"));
MainFrame.octavePanel.evaluate(comd+";");
}
}
catch(Exception e) {
JOptionPane.showMessageDialog(frame,"Package not selected","Error",JOptionPane.ERROR_MESSAGE);
}
}//GEN-LAST:event_UnLoadButtonActionPerformed
private void unloadAllButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_unloadAllButtonActionPerformed
try {
int i =JOptionPane.showConfirmDialog(frame,
"Unload all packages?", "Domain", JOptionPane.YES_NO_OPTION);
if(i == JOptionPane.YES_OPTION){
String comd ="pkg unload all ";
MainFrame.octavePanel.evaluate(comd+";");
}
}
catch(Exception e) {
JOptionPane.showMessageDialog(frame,e.toString(),"Error",JOptionPane.ERROR_MESSAGE);
}
}//GEN-LAST:event_unloadAllButtonActionPerformed
private void loadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadButtonActionPerformed
try {
int i =JOptionPane.showConfirmDialog(frame,
"Load?\n"+_model.getElementAt(pkgList.getSelectedIndex()).toString(), "Domain", JOptionPane.YES_NO_OPTION);
if(i == JOptionPane.YES_OPTION){
String pkg = _model.getElementAt(pkgList.getSelectedIndex()).toString();
String comd ="pkg load "+pkg.substring(0, pkg.indexOf("-"));
MainFrame.octavePanel.evaluate(comd+";");
}
}
catch(Exception e) {
JOptionPane.showMessageDialog(frame,"Package not selected","Error",JOptionPane.ERROR_MESSAGE);
}
}//GEN-LAST:event_loadButtonActionPerformed
private void loadAllButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadAllButtonActionPerformed
try {
int i =JOptionPane.showConfirmDialog(frame,
"Load all packages?", "Domain", JOptionPane.YES_NO_OPTION);
if(i == JOptionPane.YES_OPTION){
String comd ="pkg load all ";
MainFrame.octavePanel.evaluate(comd+";");
}
}
catch(Exception e) {
JOptionPane.showMessageDialog(frame,e.toString(),"Error",JOptionPane.ERROR_MESSAGE);
}
}//GEN-LAST:event_loadAllButtonActionPerformed
private void UnInstallButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_UnInstallButtonActionPerformed
try {
int i =JOptionPane.showConfirmDialog(frame,
"Uninstall?\n"+_model.getElementAt(pkgList.getSelectedIndex()).toString(), "Domain", JOptionPane.YES_NO_OPTION);
if(i == JOptionPane.YES_OPTION){
String pkg = _model.getElementAt(pkgList.getSelectedIndex()).toString();
String comd ="pkg uninstall "+pkg.substring(0, pkg.indexOf("-"));
MainFrame.octavePanel.evaluate(comd+";");
}
}
catch(Exception e) {
JOptionPane.showMessageDialog(frame,"Package not selected","Error",JOptionPane.ERROR_MESSAGE);
}
}//GEN-LAST:event_UnInstallButtonActionPerformed
public void setArea() {
String pkg = _model.getElementAt(pkgList.getSelectedIndex()).toString();
String comd2 =pkg.substring(0, pkg.indexOf("-"));
String comd ="pkg ("+"'"+"describe"+"'"+","
+"'"+comd2+"'"+")";
String cmd = frame.getOctavePath()+" -qf --eval "+Character.toString('"')+
comd+
Character.toString('"');
String line="";
try {
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader br =
new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader br2 =
new BufferedReader(new InputStreamReader(p.getErrorStream()));
String s="";
while((line=br.readLine()) != null) {
s += line+"\n";
}
while((line=br2.readLine()) != null) {
s += line+"\n";
}
JOptionPane.showMessageDialog(frame,s);
}
catch(Exception ex) {
System.out.println(ex.toString());
}
}
private void pkgListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_pkgListValueChanged
// setArea();
}//GEN-LAST:event_pkgListValueChanged
public void browse(){
JFileChooser fc = new JFileChooser();
fc.setCurrentDirectory(new File(System.getProperty("user.dir")+File.separator+"works"));
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
File file = null;
int returnVal = fc.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = fc.getSelectedFile();
pathField.setText(file.getAbsolutePath());
}
}
private void browseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_browseButtonActionPerformed
browse();
}//GEN-LAST:event_browseButtonActionPerformed
private void genButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_genButtonActionPerformed
String path = pathField.getText();
String text = _model.getElementAt(pkgList.getSelectedIndex()).toString();
String pkg = text.substring(0,text.indexOf("-") );
String opt = (String) optionsCombo.getSelectedItem();
String options = "options = get_html_options("+Character.toString('"')+opt+
Character.toString('"')+ ");";
String cmd =options+"generate_package_html("+
Character.toString('"')+pkg+Character.toString('"')+
", "+
Character.toString('"')+path+Character.toString('"')+
", "+
"options"+
");";
MainFrame.octavePanel.evaluate("pkg load generate_html;"+cmd);
System.out.println(cmd);
dispose();
}//GEN-LAST:event_genButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton UnInstallButton;
private javax.swing.JButton UnLoadButton;
private javax.swing.JButton browseButton;
private javax.swing.JButton cancelButton;
private javax.swing.JButton genButton;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton listButton;
private javax.swing.JButton loadAllButton;
private javax.swing.JButton loadButton;
private javax.swing.JComboBox optionsCombo;
private javax.swing.JTextField pathField;
private javax.swing.JList pkgList;
private javax.swing.JButton unloadAllButton;
// End of variables declaration//GEN-END:variables
}