From 0d12a329cf2e4fceea3754cbc854659df49e7c6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Kov=C3=A1r?= <matko@192.168.1.105> Date: Fri, 19 Nov 2021 11:31:47 +0100 Subject: [PATCH] created new class DefaultModelsTableModel --- .../fidentis/analyst/core/ProjectTopComp.form | 6 +- .../fidentis/analyst/core/ProjectTopComp.java | 88 ++----------------- .../analyst/gui/DefaultModelsTableModel.java | 50 +++++++++++ 3 files changed, 58 insertions(+), 86 deletions(-) create mode 100644 GUI/src/main/java/cz/fidentis/analyst/gui/DefaultModelsTableModel.java 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 c2a4060a..c337bab2 100644 --- a/GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.form +++ b/GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.form @@ -240,10 +240,10 @@ <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));
//jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);"> + <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.setModel(new cz.fidentis.analyst.gui.DefaultModelsTableModel(new Object[]{"", "Models", "KD-tree"}, 0));
/*"> <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();
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);
 }
 }
 }
});"> + <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(2).setMaxWidth(75);
jTable1.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(50);
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"> @@ -264,4 +264,4 @@ </SubComponents> </Container> </SubComponents> -</Form> +</Form> \ No newline at end of file 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 e977b24b..a6b50274 100644 --- a/GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.java +++ b/GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.java @@ -13,6 +13,7 @@ import org.openide.util.NbBundle.Messages; import cz.fidentis.analyst.Project; import cz.fidentis.analyst.face.HumanFace; import cz.fidentis.analyst.face.HumanFaceFactory; +import cz.fidentis.analyst.gui.DefaultModelsTableModel; import java.io.File; import java.io.IOException; import java.nio.file.Path; @@ -24,7 +25,6 @@ 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; @@ -219,7 +219,8 @@ 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 DefaultModelsTableModel(new Object[]{"", "Models", "KD-tree"}, 0)); + /* jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] {}, new String [] {"", "Models", "KD-tree"}) { @@ -249,11 +250,10 @@ 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() { @@ -494,11 +494,7 @@ public final class ProjectTopComp extends TopComponent { 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); + model.addRow(new Object[]{false, name, false}); } else { JOptionPane.showMessageDialog(this, "Model with this name is already loaded"); } @@ -506,80 +502,6 @@ public final class ProjectTopComp extends TopComponent { } } - /** - * Load two models for 1:1 comparison - - public void loadTwoModels() { - - File file1 = 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(); - - File file2 = 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 (file1 == null || file2 == null) { - System.out.print("Missing file."); - } else { - String faceId1 = HumanFaceFactory.instance().loadFace(file1); - String faceId2 = HumanFaceFactory.instance().loadFace(file2); - HumanFace face1 = HumanFaceFactory.instance().getFace(faceId1); - HumanFace face2 = HumanFaceFactory.instance().getFace(faceId2); - - try { - // simple hack: - Path path = Paths.get(file1.getAbsolutePath()); - Path folder = path.getParent(); - Path filename = path.getFileName(); - String filestr = filename.toString(); - filestr = filestr.split("_ECA.obj")[0]; - filestr = filestr + "_landmarks.csv"; - face1.loadFeaturePoints(folder.toString(), filestr); - } catch(IOException ex) { - ex.printStackTrace(); - } - - try { - // simple hack: - Path path = Paths.get(file2.getAbsolutePath()); - Path folder = path.getParent(); - Path filename = path.getFileName(); - String filestr = filename.toString(); - filestr = filestr.split("_ECA.obj")[0]; - filestr = filestr + "_landmarks.csv"; - face2.loadFeaturePoints(folder.toString(), filestr); - } catch(IOException ex) { - ex.printStackTrace(); - } - - //this.project.setPrimaryFace(face1); - //this.project.addFace(face1); - this.project.setFaces(List.of(face1, face2)); - createFaceToFaceTab(face1, face2, "1:1"); - - javax.swing.table.DefaultTableModel model = (javax.swing.table.DefaultTableModel) jTable1.getModel(); - - if (selectedRows.size() == 2) { - - String name1 = model.getValueAt(selectedRows.get(0), 1).toString(); - String name2 = model.getValueAt(selectedRows.get(1), 1).toString(); - HumanFace face1 = project.getFaceByName(name1); - HumanFace face2 = project.getFaceByName(name2); - createFaceToFaceTab(face1, face2, name1 + ":" + name2); - } else { - JOptionPane.showMessageDialog(this, "Select two models"); - } - }*/ - /** * Creates and opens tab with one face * @param face which will be analyzed diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/DefaultModelsTableModel.java b/GUI/src/main/java/cz/fidentis/analyst/gui/DefaultModelsTableModel.java new file mode 100644 index 00000000..70aec69d --- /dev/null +++ b/GUI/src/main/java/cz/fidentis/analyst/gui/DefaultModelsTableModel.java @@ -0,0 +1,50 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package cz.fidentis.analyst.gui; + +import javax.swing.event.TableModelListener; +import javax.swing.table.DefaultTableModel; + +/** + * + * @author Matej Kovar + */ +public class DefaultModelsTableModel extends DefaultTableModel { + + public DefaultModelsTableModel(Object[] columnNames, int rowCount) { + super(columnNames, rowCount); + } + + + 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 + }; + + @Override + public Class getColumnClass(int columnIndex) { + return types [columnIndex];} + + @Override + 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; + } +} -- GitLab