diff --git a/plugins/EditTestingList.form b/plugins/EditTestingList.form
index 3381652..4b9d90f 100644
--- a/plugins/EditTestingList.form
+++ b/plugins/EditTestingList.form
@@ -38,6 +38,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -55,11 +66,22 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -72,8 +94,12 @@
-
+
+
+
+
+
@@ -95,7 +121,7 @@
-
+
@@ -111,11 +137,11 @@
-
+
-
+
-
+
@@ -123,9 +149,9 @@
-
-
-
+
+
+
@@ -133,29 +159,29 @@
-
+
-
+
-
+
-
+
-
+
diff --git a/plugins/EditTestingList.java b/plugins/EditTestingList.java
index d09dcf8..c08ad41 100644
--- a/plugins/EditTestingList.java
+++ b/plugins/EditTestingList.java
@@ -3,7 +3,22 @@
*/
import ch.psi.utils.swing.SwingUtils;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.nio.file.Paths;
+import java.util.Iterator;
+import java.util.Properties;
+import java.util.Vector;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.JFileChooser;
+import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
+import org.apache.commons.io.FilenameUtils;
/*
* To change this license header, choose License Headers in Project Properties.
@@ -26,7 +41,8 @@ public class EditTestingList extends javax.swing.JPanel {
public EditTestingList(TableModel hDetails) {
initComponents();
- fillComponents(hDetails);
+ //fillComponents(hDetails);
+ loadTests();
}
/**
@@ -44,9 +60,9 @@ public class EditTestingList extends javax.swing.JPanel {
jScrollPane5 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jPanel2 = new javax.swing.JPanel();
- cmDefault2 = new javax.swing.JButton();
- cmCancel2 = new javax.swing.JButton();
- cmOk2 = new javax.swing.JButton();
+ cmDefault = new javax.swing.JButton();
+ cmCancel = new javax.swing.JButton();
+ cmOk = new javax.swing.JButton();
setPreferredSize(new java.awt.Dimension(963, 556));
setLayout(new java.awt.BorderLayout());
@@ -54,29 +70,37 @@ public class EditTestingList extends javax.swing.JPanel {
jPanel1.setPreferredSize(new java.awt.Dimension(963, 556));
jPanel1.setLayout(new javax.swing.BoxLayout(jPanel1, javax.swing.BoxLayout.LINE_AXIS));
+ jScrollPane2.setMaximumSize(new java.awt.Dimension(4000, 32767));
+ jScrollPane2.setMinimumSize(new java.awt.Dimension(100, 27));
+ jScrollPane2.setPreferredSize(new java.awt.Dimension(100, 146));
+
jList2.setModel(new javax.swing.AbstractListModel() {
String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
public int getSize() { return strings.length; }
public Object getElementAt(int i) { return strings[i]; }
});
+ jList2.setMaximumSize(new java.awt.Dimension(0, 0));
+ jList2.setMinimumSize(new java.awt.Dimension(0, 0));
jScrollPane2.setViewportView(jList2);
jPanel1.add(jScrollPane2);
+ jScrollPane5.setMinimumSize(new java.awt.Dimension(300, 300));
+
jTable1.setFont(new java.awt.Font("Tahoma", 0, 15)); // NOI18N
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
- "Select", "Start", "Time", "Device Name", "Device Description", "Test Suite", "Test Name", "Test Peth", "Test Parameters", "Test Description", "Test Help", "Last Test Result", "Status", ""
+ "Select", "Start", "Device Name", "Device Description", "Test Suite", "Test Name", "Test Peth", "Test Description",
}
) {
Class[] types = new Class [] {
- java.lang.Boolean.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, javax.swing.Icon.class
+ java.lang.Boolean.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class
};
boolean[] canEdit = new boolean [] {
- true, true, false, false, false, false, false, false, false, false, false, false, false, false
+ true, true, false, false, false, false, false, false
};
public Class getColumnClass(int columnIndex) {
@@ -87,6 +111,7 @@ public class EditTestingList extends javax.swing.JPanel {
return canEdit [columnIndex];
}
});
+ jTable1.setColumnSelectionAllowed(true);
jTable1.setDragEnabled(true);
jTable1.setDropMode(javax.swing.DropMode.INSERT);
jTable1.setRowHeight(22);
@@ -101,33 +126,34 @@ public class EditTestingList extends javax.swing.JPanel {
}
});
jScrollPane5.setViewportView(jTable1);
+ jTable1.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
jPanel1.add(jScrollPane5);
add(jPanel1, java.awt.BorderLayout.CENTER);
- jPanel2.setPreferredSize(new java.awt.Dimension(263, 30));
+ jPanel2.setPreferredSize(new java.awt.Dimension(263, 50));
- cmDefault2.setText("Save as Default");
+ cmDefault.setText("Save as Default");
this.cmCancel.setVisible(false);
this.cmOk.setVisible(false);
this.cmDefault.setVisible(false);
- cmDefault2.addActionListener(new java.awt.event.ActionListener() {
+ cmDefault.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
- cmDefault2ActionPerformed(evt);
+ cmDefaultActionPerformed(evt);
}
});
- cmCancel2.setText("Cancel");
+ cmCancel.setText("Cancel");
this.cmCancel.setVisible(false);
this.cmOk.setVisible(false);
- cmCancel2.addActionListener(new java.awt.event.ActionListener() {
+ cmCancel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
- cmCancel2ActionPerformed(evt);
+ cmCancelActionPerformed(evt);
}
});
- cmOk2.setText("Ok");
+ cmOk.setText("Ok");
this.cmCancel.setVisible(false);
this.cmOk.setVisible(false);
@@ -136,19 +162,19 @@ public class EditTestingList extends javax.swing.JPanel {
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
- .addComponent(cmDefault2, javax.swing.GroupLayout.PREFERRED_SIZE, 204, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(cmDefault, javax.swing.GroupLayout.PREFERRED_SIZE, 204, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 223, Short.MAX_VALUE)
- .addComponent(cmOk2, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(cmOk, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(32, 32, 32)
- .addComponent(cmCancel2))
+ .addComponent(cmCancel))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(cmCancel2, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(cmOk2, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(cmDefault2, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(cmCancel, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(cmOk, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(cmDefault, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(25, 25, 25))
);
@@ -157,9 +183,119 @@ public class EditTestingList extends javax.swing.JPanel {
private void fillComponents(TableModel hDetails) {
jTable1.setModel(hDetails);
+
}
+ /**
+ * Load test list from file
+ *
+ * @param file file containing the settings
+ */
+ private void loadSettings(String sFileName) {
+ final JFileChooser fc = new JFileChooser();
+ File file = new File(sFileName);
+ if (file.isFile()){
+ DefaultTableModel tableModel = (DefaultTableModel) jTable1.getModel();
+ try {
+ ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
+ Vector rowData = (Vector) in.readObject();
+ Iterator itr = rowData.iterator();
+ //clear table
+ tableModel.getDataVector().removeAllElements();
+ tableModel.fireTableDataChanged();
+ //rewrite table
+ while (itr.hasNext()) {
+ tableModel.addRow((Vector) itr.next());
+ }
+ in.close();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ SwingUtils.showMessage(this, "loadSettings()", ex.toString());
+ }
+ }
+ }
+
+
+ /**
+ * scan tests directory, scan devices directory, search for their test cases
+ * and scan for tests.
+ *
+ * @throws FileNotFoundException
+ * @throws IOException
+ */
+ public void loadTests() {
+ Properties propDevice = new Properties();
+ Properties propTest = new Properties();
+ //String fileName = TESTS_DEVICES_DEFAULT_DIR;
+ //File folder = new File(fileName);
+ File testsFolder = null;
+ String sTestName;
+ int iCounter = 0;
+ //search devices and their tests
+ //Scan the list of devices
+ File[] listOfFiles = (TestingList.TESTS_DEVICES_DEFAULT_DIR.toFile()).listFiles();
+ for (File listOfFile : listOfFiles) {
+ propDevice.clear();
+ if (listOfFile.isFile()) {
+ } else if (listOfFile.isDirectory()) {
+ File configFile = new File(listOfFile.getPath() + FilenameUtils.separatorsToSystem("/.config"));
+ if (configFile.exists() && !configFile.isDirectory()) {
+ InputStream is = null;
+ try {
+ is = new FileInputStream(configFile);
+ } catch (FileNotFoundException ex) {
+ Logger.getLogger(EditTestingList.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ if(is != null){
+ try {
+ propDevice.load(is);
+ } catch (IOException ex) {
+ Logger.getLogger(EditTestingList.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ //config of device was loaded. now load the config of each test belonging to the device
+ //sTestName = TESTS_TESTS_DEFAULT_DIR + propDevice.getProperty("tests");
+ //testsFolder = new File(sTestName);
+ testsFolder = Paths.get(TestingList.TESTS_TESTS_DEFAULT_DIR.toString(), propDevice.getProperty("tests")).toFile();
+ if (testsFolder.exists() && testsFolder.isDirectory()) {
+ File[] listOfTests = testsFolder.listFiles();
+ for (File listOfTest : listOfTests) {
+ propTest.clear();
+ if (listOfTest.isDirectory()) {
+ configFile = new File(listOfTest.getPath() + FilenameUtils.separatorsToSystem("/.config"));
+ if (configFile.exists() && !configFile.isDirectory()) {
+ InputStream ist = null;
+ try {
+ ist = new FileInputStream(configFile);
+ } catch (FileNotFoundException ex) {
+ Logger.getLogger(EditTestingList.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ try {
+ propTest.load(ist);
+ } catch (IOException ex) {
+ Logger.getLogger(EditTestingList.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ addToTable("",
+ propDevice.getProperty("name"),
+ propDevice.getProperty("description"),
+ propDevice.getProperty("tests"),
+ "path",
+ propTest.getProperty("name"),
+ propTest.getProperty("parameters"));
+ iCounter++;
+ }
+ }
+ }
+ }
+ }
+ else{
+ SwingUtils.showMessage(this, "loadTests()", "Could not find any test");
+ }
+ }
+ }
+ }
+ }
+
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MouseClicked
if (this.jTable1.isEnabled()) {
@@ -182,19 +318,19 @@ public class EditTestingList extends javax.swing.JPanel {
}//GEN-LAST:event_jTable1KeyReleased
- private void cmCancel2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmCancel2ActionPerformed
+ private void cmCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmCancelActionPerformed
// TODO add your handling code here:
- }//GEN-LAST:event_cmCancel2ActionPerformed
+ }//GEN-LAST:event_cmCancelActionPerformed
- private void cmDefault2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmDefault2ActionPerformed
+ private void cmDefaultActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmDefaultActionPerformed
// TODO add your handling code here:
- }//GEN-LAST:event_cmDefault2ActionPerformed
+ }//GEN-LAST:event_cmDefaultActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JButton cmCancel2;
- private javax.swing.JButton cmDefault2;
- private javax.swing.JButton cmOk2;
+ private javax.swing.JButton cmCancel;
+ private javax.swing.JButton cmDefault;
+ private javax.swing.JButton cmOk;
private javax.swing.JList jList2;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
@@ -202,4 +338,8 @@ public class EditTestingList extends javax.swing.JPanel {
private javax.swing.JScrollPane jScrollPane5;
private javax.swing.JTable jTable1;
// End of variables declaration//GEN-END:variables
+
+ private void addToTable(String property, String property0, String property1, String property2, String property3, String property4, String property5) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
}
diff --git a/plugins/TestingList.java b/plugins/TestingList.java
index 55e6f17..abc7992 100644
--- a/plugins/TestingList.java
+++ b/plugins/TestingList.java
@@ -239,9 +239,9 @@ public class TestingList extends Panel {
Logger logger = Logger.getLogger("TestsLog");
//these paths are converted to unix or win path according to host OS
- private final Path TESTS_DEVICES_DEFAULT_DIR = Paths.get(".","home", "script", "tests", "devices");
- private final Path TESTS_TESTS_DEFAULT_DIR = Paths.get(".","home", "script", "tests", "tests");
- private final Path TESTS_LOG_DEFAULT_DIR = Paths.get(".","home", "script", "tests", "log", "TestsLog"+ getnow() + ".txt");
+ public static Path TESTS_DEVICES_DEFAULT_DIR = Paths.get(".","home", "script", "tests", "devices");
+ public static Path TESTS_TESTS_DEFAULT_DIR = Paths.get(".","home", "script", "tests", "tests");
+ public final Path TESTS_LOG_DEFAULT_DIR = Paths.get(".","home", "script", "tests", "log", "TestsLog"+ getnow() + ".txt");
private void log(Object text){
@@ -1404,7 +1404,7 @@ public class TestingList extends Panel {
}
/**
- * Save current setup in a file. The current position of table rows is also
+ * Load current setup from a file. The current position of table rows is also
* saved.
*
* @param file file containing the settings