Skip to content
Snippets Groups Projects
Commit 0f7f9e0c authored by Matej Kovár's avatar Matej Kovár
Browse files

added "has KD-tree" column to table and multiple model selection

parent 85415dbd
No related branches found
No related tags found
No related merge requests found
......@@ -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);&#xa;jTable1.getTableHeader().setBackground(new java.awt.Color(204,204,204));&#xa;jTable1.getTableHeader().setFont(new java.awt.Font(&quot;Tahoma&quot;, 0, 18));">
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor" postCode="jTable1.getTableHeader().setOpaque(false);&#xa;jTable1.getTableHeader().setBackground(new java.awt.Color(204,204,204));&#xa;jTable1.getTableHeader().setFont(new java.awt.Font(&quot;Tahoma&quot;, 0, 18));&#xa;//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();&#xa;model = (javax.swing.table.DefaultTableModel) jTable1.getModel();&#xa;model.addTableModelListener(new TableModelListener() {&#xa;&#xa; public void tableChanged(TableModelEvent e) {&#xa; &#xa; if (e.getType() == javax.swing.event.TableModelEvent.UPDATE &amp;&amp; byUser) {&#xa; int row = e.getFirstRow();&#xa; int col = e.getColumn();&#xa;&#xa; if (jTable1.getValueAt(row, col) == (Object)true) {&#xa; selectedRows.add(row);&#xa; } else {&#xa; selectedRows.remove((Object)row);&#xa; }&#xa; }&#xa; }&#xa;});">
<Connection code="new javax.swing.table.DefaultTableModel(&#xa; new Object [][] {},&#xa; new String [] {&quot;&quot;, &quot;Models&quot;}) {&#xa; private Class[] types = new Class [] {&#xa; java.lang.Boolean.class, java.lang.Object.class&#xa; };&#xa; private boolean[] canEdit = new boolean [] {&#xa; true, false};&#xa;&#xa; public Class getColumnClass(int columnIndex) {&#xa; return types [columnIndex];}&#xa;&#xa; public boolean isCellEditable(int rowIndex, int columnIndex) {&#xa; return canEdit [columnIndex];&#xa; }&#xa; public Class[] getTypes() {&#xa; return types;}&#xa;&#xa; public void setTypes(Class[] types) {&#xa; this.types = types;}&#xa;&#xa; public boolean[] getCanEdit() {&#xa; return canEdit;}&#xa;&#xa; public void setCanEdit(boolean[] canEdit) {&#xa; this.canEdit = canEdit;&#xa; }&#xa;}" 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();&#xa;jTable1.getColumnModel().getColumn(0).setMaxWidth(50);&#xa;//jTable1.getColumnModel().getColumn(1).setPreferredWidth(1000);&#xa;jTable1.getColumnModel().getColumn(2).setMaxWidth(75);&#xa;jTable1.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(50);&#xa;//jTable1.getTableHeader().getColumnModel().getColumn(1).setPreferredWidth(1000);&#xa;jTable1.getTableHeader().getColumnModel().getColumn(2).setMaxWidth(75);&#xa;model = (javax.swing.table.DefaultTableModel) jTable1.getModel();&#xa;model.addTableModelListener(new TableModelListener() {&#xa;&#xa; public void tableChanged(TableModelEvent e) {&#xa; &#xa; if (e.getType() == javax.swing.event.TableModelEvent.UPDATE &amp;&amp; byUser) {&#xa; int row = e.getFirstRow();&#xa; int col = e.getColumn();&#xa;&#xa; if (jTable1.getValueAt(row, col) == (Object)true) {&#xa; selectedRows.add(row);&#xa; } else {&#xa; selectedRows.remove((Object)row);&#xa; }&#xa; }&#xa; }&#xa;});">
<Connection code="new javax.swing.table.DefaultTableModel(&#xa; new Object [][] {},&#xa; new String [] {&quot;&quot;, &quot;Models&quot;, &quot;KD-tree&quot;}) {&#xa; private Class[] types = new Class [] {&#xa; java.lang.Boolean.class, java.lang.Object.class, java.lang.Boolean.class&#xa; };&#xa; private boolean[] canEdit = new boolean [] {&#xa; true, false, false};&#xa;&#xa; public Class getColumnClass(int columnIndex) {&#xa; return types [columnIndex];}&#xa;&#xa; public boolean isCellEditable(int rowIndex, int columnIndex) {&#xa; return canEdit [columnIndex];&#xa; }&#xa; public Class[] getTypes() {&#xa; return types;}&#xa;&#xa; public void setTypes(Class[] types) {&#xa; this.types = types;}&#xa;&#xa; public boolean[] getCanEdit() {&#xa; return canEdit;}&#xa;&#xa; public void setCanEdit(boolean[] canEdit) {&#xa; this.canEdit = canEdit;&#xa; }&#xa;}" 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, &quot;{key}&quot;)"/>
</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, &quot;{key}&quot;)"/>
</Title>
<Editor/>
<Renderer/>
</Column>
</TableColumnModel>
<TableColumnModel selectionModel="0"/>
</Property>
<Property name="dragEnabled" type="boolean" value="true"/>
<Property name="rowHeight" type="int" value="40"/>
......
......@@ -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");
}
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment