diff --git a/GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.form b/GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.form index 6c7391939d67d02f634c69e19cd4cf724aad40b1..c2a4060a064361b4c46eb0808cbefe795043729d 100644 --- a/GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.form +++ b/GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.form @@ -240,29 +240,14 @@ <SubComponents> <Component class="javax.swing.JTable" name="jTable1"> <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor" postCode="jTable1.getTableHeader().setOpaque(false);
jTable1.getTableHeader().setBackground(new java.awt.Color(204,204,204));
jTable1.getTableHeader().setFont(new java.awt.Font("Tahoma", 0, 18));"> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor" postCode="jTable1.getTableHeader().setOpaque(false);
jTable1.getTableHeader().setBackground(new java.awt.Color(204,204,204));
jTable1.getTableHeader().setFont(new java.awt.Font("Tahoma", 0, 18));
//jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);"> <Font name="Tahoma" size="18" style="0"/> </Property> - <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor" postCode="//javax.swing.table.DefaultTableModel model = (javax.swing.table.DefaultTableModel)jTable1.getModel();
model = (javax.swing.table.DefaultTableModel) jTable1.getModel();
model.addTableModelListener(new TableModelListener() {

 public void tableChanged(TableModelEvent e) {
 
 if (e.getType() == javax.swing.event.TableModelEvent.UPDATE && byUser) {
 int row = e.getFirstRow();
 int col = e.getColumn();

 if (jTable1.getValueAt(row, col) == (Object)true) {
 selectedRows.add(row);
 } else {
 selectedRows.remove((Object)row);
 }
 }
 }
});"> - <Connection code="new javax.swing.table.DefaultTableModel(
 new Object [][] {},
 new String [] {"", "Models"}) {
 private Class[] types = new Class [] {
 java.lang.Boolean.class, java.lang.Object.class
 };
 private boolean[] canEdit = new boolean [] {
 true, false};

 public Class getColumnClass(int columnIndex) {
 return types [columnIndex];}

 public boolean isCellEditable(int rowIndex, int columnIndex) {
 return canEdit [columnIndex];
 }
 public Class[] getTypes() {
 return types;}

 public void setTypes(Class[] types) {
 this.types = types;}

 public boolean[] getCanEdit() {
 return canEdit;}

 public void setCanEdit(boolean[] canEdit) {
 this.canEdit = canEdit;
 }
}" type="code"/> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor" postCode="//javax.swing.table.DefaultTableModel model = (javax.swing.table.DefaultTableModel)jTable1.getModel();
jTable1.getColumnModel().getColumn(0).setMaxWidth(50);
//jTable1.getColumnModel().getColumn(1).setPreferredWidth(1000);
jTable1.getColumnModel().getColumn(2).setMaxWidth(75);
jTable1.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(50);
//jTable1.getTableHeader().getColumnModel().getColumn(1).setPreferredWidth(1000);
jTable1.getTableHeader().getColumnModel().getColumn(2).setMaxWidth(75);
model = (javax.swing.table.DefaultTableModel) jTable1.getModel();
model.addTableModelListener(new TableModelListener() {

 public void tableChanged(TableModelEvent e) {
 
 if (e.getType() == javax.swing.event.TableModelEvent.UPDATE && byUser) {
 int row = e.getFirstRow();
 int col = e.getColumn();

 if (jTable1.getValueAt(row, col) == (Object)true) {
 selectedRows.add(row);
 } else {
 selectedRows.remove((Object)row);
 }
 }
 }
});"> + <Connection code="new javax.swing.table.DefaultTableModel(
 new Object [][] {},
 new String [] {"", "Models", "KD-tree"}) {
 private Class[] types = new Class [] {
 java.lang.Boolean.class, java.lang.Object.class, java.lang.Boolean.class
 };
 private boolean[] canEdit = new boolean [] {
 true, false, false};

 public Class getColumnClass(int columnIndex) {
 return types [columnIndex];}

 public boolean isCellEditable(int rowIndex, int columnIndex) {
 return canEdit [columnIndex];
 }
 public Class[] getTypes() {
 return types;}

 public void setTypes(Class[] types) {
 this.types = types;}

 public boolean[] getCanEdit() {
 return canEdit;}

 public void setCanEdit(boolean[] canEdit) {
 this.canEdit = canEdit;
 }
}" type="code"/> </Property> <Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor"> - <TableColumnModel selectionModel="3"> - <Column maxWidth="50" minWidth="-1" prefWidth="50" resizable="true"> - <Title editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jTable1.columnModel.title1_1" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Title> - <Editor/> - <Renderer/> - </Column> - <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> - <Title editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jTable1.columnModel.title0_1" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Title> - <Editor/> - <Renderer/> - </Column> - </TableColumnModel> + <TableColumnModel selectionModel="0"/> </Property> <Property name="dragEnabled" type="boolean" value="true"/> <Property name="rowHeight" type="int" value="40"/> diff --git a/GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.java b/GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.java index 69a4278f247e92cf6c738f3436ce50f10ebea846..e977b24bf17485ce9ea9a6286e8342b3c651b188 100644 --- a/GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.java +++ b/GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; import java.util.stream.IntStream; +import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; @@ -218,14 +219,15 @@ public final class ProjectTopComp extends TopComponent { jTable1.getTableHeader().setOpaque(false); jTable1.getTableHeader().setBackground(new java.awt.Color(204,204,204)); jTable1.getTableHeader().setFont(new java.awt.Font("Tahoma", 0, 18)); + //jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] {}, - new String [] {"", "Models"}) { + new String [] {"", "Models", "KD-tree"}) { private Class[] types = new Class [] { - java.lang.Boolean.class, java.lang.Object.class + java.lang.Boolean.class, java.lang.Object.class, java.lang.Boolean.class }; private boolean[] canEdit = new boolean [] { - true, false}; + true, false, false}; public Class getColumnClass(int columnIndex) { return types [columnIndex];} @@ -247,6 +249,12 @@ public final class ProjectTopComp extends TopComponent { } }); //javax.swing.table.DefaultTableModel model = (javax.swing.table.DefaultTableModel)jTable1.getModel(); + jTable1.getColumnModel().getColumn(0).setMaxWidth(50); + //jTable1.getColumnModel().getColumn(1).setPreferredWidth(1000); + jTable1.getColumnModel().getColumn(2).setMaxWidth(75); + jTable1.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(50); + //jTable1.getTableHeader().getColumnModel().getColumn(1).setPreferredWidth(1000); + jTable1.getTableHeader().getColumnModel().getColumn(2).setMaxWidth(75); model = (javax.swing.table.DefaultTableModel) jTable1.getModel(); model.addTableModelListener(new TableModelListener() { @@ -269,13 +277,6 @@ public final class ProjectTopComp extends TopComponent { jTable1.setRowSelectionAllowed(false); jTable1.getTableHeader().setReorderingAllowed(false); jScrollPane1.setViewportView(jTable1); - jTable1.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); - if (jTable1.getColumnModel().getColumnCount() > 0) { - jTable1.getColumnModel().getColumn(0).setPreferredWidth(50); - jTable1.getColumnModel().getColumn(0).setMaxWidth(50); - jTable1.getColumnModel().getColumn(0).setHeaderValue(org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jTable1.columnModel.title1_1")); // NOI18N - jTable1.getColumnModel().getColumn(1).setHeaderValue(org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jTable1.columnModel.title0_1")); // NOI18N - } javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); @@ -459,42 +460,48 @@ public final class ProjectTopComp extends TopComponent { * Loads model selected in file chooser by user */ public void loadModel() { - File file = new FileChooserBuilder(ProjectTopComp.class) + File[] files = new FileChooserBuilder(ProjectTopComp.class) .setTitle("Open human face(s)") .setDefaultWorkingDirectory(new File(System.getProperty("user.home"))) //.setApproveText("Add") .setFileFilter(new FileNameExtensionFilter("obj files (*.obj)", "obj")) .setAcceptAllFileFilterUsed(true) - .showOpenDialog(); - - if (file == null) { + .showMultiOpenDialog(); + + + if (files == null) { System.out.print("No file chosen."); } else { OutputWindow out = OutputWindow.measureTime(); - String faceId = HumanFaceFactory.instance().loadFace(file); - HumanFace face = HumanFaceFactory.instance().getFace(faceId); - out.printDuration("Loaded model " + face.getShortName() +" with " + face.getMeshModel().getNumVertices() + " vertices"); - - try { - // simple hack: - Path path = Paths.get(file.getAbsolutePath()); - Path folder = path.getParent(); - Path filename = path.getFileName(); - String filestr = filename.toString(); - filestr = filestr.split("_ECA.obj")[0]; - filestr = filestr + "_landmarks.csv"; - face.loadFeaturePoints(folder.toString(), filestr); - } catch (IOException ex) { - ex.printStackTrace(); - } + for (File file : files) { + String faceId = HumanFaceFactory.instance().loadFace(file); + HumanFace face = HumanFaceFactory.instance().getFace(faceId); + out.printDuration("Loaded model " + face.getShortName() +" with " + face.getMeshModel().getNumVertices() + " vertices"); + + try { + // simple hack: + Path path = Paths.get(file.getAbsolutePath()); + Path folder = path.getParent(); + Path filename = path.getFileName(); + String filestr = filename.toString(); + filestr = filestr.split("_ECA.obj")[0]; + filestr = filestr + "_landmarks.csv"; + face.loadFeaturePoints(folder.toString(), filestr); + } catch (IOException ex) { + ex.printStackTrace(); + } - String name = face.getShortName(); - if (this.project.getFaceByName(name) == null) { - this.project.addFace(face); - model.addRow(new Object[]{false, name}); - //createSingleFaceTab(face, name); - } else { - JOptionPane.showMessageDialog(this, "Model with this name is already loaded"); + String name = face.getShortName(); + if (this.project.getFaceByName(name) == null) { + this.project.addFace(face); + boolean hasKD; + if (face.getKdTree() == null) {hasKD = false;} + else {hasKD = true;} + model.addRow(new Object[]{false, name, hasKD}); + //createSingleFaceTab(face, name); + } else { + JOptionPane.showMessageDialog(this, "Model with this name is already loaded"); + } } } }