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

added javadocs

parent 7b65ab15
No related branches found
No related tags found
No related merge requests found
......@@ -243,7 +243,7 @@
<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));">
<Font name="Tahoma" size="18" style="0"/>
</Property>
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor" postCode="javax.swing.table.DefaultTableModel 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;});">
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor" 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;});">
<Table columnCount="2" rowCount="0">
<Column editable="true" title="" type="java.lang.Boolean"/>
<Column editable="false" title="Models" type="java.lang.Object"/>
......
......@@ -20,11 +20,8 @@ import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import javax.swing.JOptionPane;
......@@ -34,10 +31,10 @@ import javax.swing.filechooser.FileNameExtensionFilter;
import org.openide.filesystems.FileChooserBuilder;
/**
* The main panel enabling analysts to select the primary and secondary faces,
* and to perform basic batch processing. This panel also serves as an entry point
* for detailed face analysis and face-to-face comparison.
*
* The main panel enabling analysts to select the primary and secondary faces,
* and to perform basic batch processing. This panel also serves as an entry
* point for detailed face analysis and face-to-face comparison.
*
* @author Matej Kovar
*/
@ConvertAsProperties(
......@@ -66,7 +63,13 @@ public final class ProjectTopComp extends TopComponent {
private final Project project;
private Map<HumanFace, SingleFaceTab> singleFaceTabs = new HashMap<>();
private Map<HumanFace, FaceToFaceTab> faceToFaceTabs = new HashMap<>();
private javax.swing.table.DefaultTableModel model;
/* List of indexes of selected Rows */
private List<Integer> selectedRows = new ArrayList<>();
/* Variable which helps to see whether user has clicked to checkbox or
clicked on selection buttons */
private Boolean byUser = true;
/**
......@@ -238,7 +241,8 @@ public final class ProjectTopComp extends TopComponent {
return canEdit [columnIndex];
}
});
javax.swing.table.DefaultTableModel model = (javax.swing.table.DefaultTableModel)jTable1.getModel();
//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) {
......@@ -303,7 +307,7 @@ public final class ProjectTopComp extends TopComponent {
}// </editor-fold>//GEN-END:initComponents
/**
*
* Adds new model
* @param evt starts function for loading model
*/
private void addButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_addButton1MouseClicked
......@@ -316,64 +320,96 @@ public final class ProjectTopComp extends TopComponent {
*/
private void removeButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_removeButton1MouseClicked
javax.swing.table.DefaultTableModel model = (javax.swing.table.DefaultTableModel)jTable1.getModel();
Collections.sort(selectedRows, Collections.reverseOrder());
for (int row : selectedRows) {
selectedRows.forEach(row -> {
HumanFace face = this.project.getFaceByName(model.getValueAt(row, 1).toString());
this.project.removeFace(face);
model.removeRow(row);
}
});
selectedRows.clear();
}//GEN-LAST:event_removeButton1MouseClicked
/**
* Opens 1:1 tab with two selected faces, otherwise pops message that you
* should select two faces
* @param evt
*/
private void oneOnOneButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_oneOnOneButton1MouseClicked
loadTwoModels();
//loadTwoModels();
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");
}
}//GEN-LAST:event_oneOnOneButton1MouseClicked
/**
* Selects all models from list of models
* @param evt
*/
private void selectAllButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_selectAllButton1MouseClicked
byUser = false;
javax.swing.table.DefaultTableModel model = (javax.swing.table.DefaultTableModel)jTable1.getModel();
for (int i = 0; i < model.getRowCount(); i++) {model.setValueAt(true, i, 0);}
for (int i = 0; i < model.getRowCount(); i++) {
model.setValueAt(true, i, 0);
}
selectedRows = IntStream.range(0, model.getRowCount()).boxed().collect(Collectors.toList());
byUser = true;
}//GEN-LAST:event_selectAllButton1MouseClicked
/**
* Deselects all models from list of models
* @param evt
*/
private void deselectAllButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_deselectAllButton1MouseClicked
byUser = false;
javax.swing.table.DefaultTableModel model = (javax.swing.table.DefaultTableModel)jTable1.getModel();
for (int i : selectedRows) {model.setValueAt(false, i, 0);}
selectedRows.forEach(i -> {model.setValueAt(false, i, 0);});
selectedRows.clear();
byUser = true;
}//GEN-LAST:event_deselectAllButton1MouseClicked
/**
* Inflates models (selected will be deselected and vice versa)
* @param evt
*/
private void inflateButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_inflateButton1MouseClicked
byUser = false;
javax.swing.table.DefaultTableModel model = (javax.swing.table.DefaultTableModel)jTable1.getModel();
for (int i = 0; i < model.getRowCount(); i++) {
if (model.getValueAt(i, 0) == (Object)true) {model.setValueAt(false, i, 0);}
else {model.setValueAt(true, i, 0);}
if (model.getValueAt(i, 0) == (Object) true) {
model.setValueAt(false, i, 0);
} else {
model.setValueAt(true, i, 0);
}
}
List<Integer> allRows = IntStream.range(0, model.getRowCount()).boxed().collect(Collectors.toList());
allRows.removeAll(selectedRows);
selectedRows = allRows;
byUser = true;
}//GEN-LAST:event_inflateButton1MouseClicked
/**
* Opens analysis of one selected face, otherwise pops message dialog that
* you should select just one face
* @param evt
*/
private void analyseButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_analyseButton1MouseClicked
javax.swing.table.DefaultTableModel model = (javax.swing.table.DefaultTableModel)jTable1.getModel();
if (selectedRows.size() == 1) {
String name = model.getValueAt(selectedRows.get(0), 1).toString();
HumanFace face = project.getFaceByName(name);
createSingleFaceTab(face, name);
} else {
JOptionPane.showMessageDialog(this, "Select one model");
}
}//GEN-LAST:event_analyseButton1MouseClicked
// Variables declaration - do not modify//GEN-BEGIN:variables
......@@ -411,25 +447,25 @@ public final class ProjectTopComp extends TopComponent {
String version = p.getProperty("version");
// TODO read your settings according to their version
}
/**
* Loads model selected in file chooser by user
*/
public void loadModel () {
public void loadModel() {
File file = new FileChooserBuilder(ProjectTopComp.class)
.setTitle("Open human face(s)")
.setDefaultWorkingDirectory(new File (System.getProperty("user.home")))
.setDefaultWorkingDirectory(new File(System.getProperty("user.home")))
//.setApproveText("Add")
.setFileFilter(new FileNameExtensionFilter("obj files (*.obj)", "obj"))
.setAcceptAllFileFilterUsed(true)
.showOpenDialog();
if (file== null) {
if (file == null) {
System.out.print("No file chosen.");
} else {
String faceId = HumanFaceFactory.instance().loadFace(file);
HumanFace face = HumanFaceFactory.instance().getFace(faceId);
try {
// simple hack:
Path path = Paths.get(file.getAbsolutePath());
......@@ -439,11 +475,10 @@ public final class ProjectTopComp extends TopComponent {
filestr = filestr.split("_ECA.obj")[0];
filestr = filestr + "_landmarks.csv";
face.loadFeaturePoints(folder.toString(), filestr);
} catch(IOException ex) {
} catch (IOException ex) {
ex.printStackTrace();
}
javax.swing.table.DefaultTableModel model = (javax.swing.table.DefaultTableModel)jTable1.getModel();
String name = face.getShortName();
if (this.project.getFaceByName(name) == null) {
this.project.addFace(face);
......@@ -452,14 +487,14 @@ public final class ProjectTopComp extends TopComponent {
} else {
JOptionPane.showMessageDialog(this, "Model is already loaded");
}
}
}
}
/**
* Load two models for 1:1 comparison
*/
public void loadTwoModels () {
/*
public void loadTwoModels() {
File file1 = new FileChooserBuilder(ProjectTopComp.class)
.setTitle("Open human face(s)")
.setDefaultWorkingDirectory(new File (System.getProperty("user.home")))
......@@ -513,12 +548,12 @@ public final class ProjectTopComp extends TopComponent {
//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();
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);
......@@ -526,9 +561,14 @@ public final class ProjectTopComp extends TopComponent {
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
* @param name name of the tab (name of the model)
*/
private void createSingleFaceTab(HumanFace face, String name) {
SingleFaceTab newTab = new SingleFaceTab(face, name);
this.singleFaceTabs.put(face, newTab);
......@@ -536,6 +576,12 @@ public final class ProjectTopComp extends TopComponent {
newTab.requestActive();
}
/**
* Creates and opens tab with two faces (1:1 analysis)
* @param face1 which will be analyzed
* @param face2 which will be analyzed
* @param name name of the tab
*/
private void createFaceToFaceTab(HumanFace face1, HumanFace face2, String name) {
FaceToFaceTab newTab = new FaceToFaceTab(face1, face2, name);
this.faceToFaceTabs.put(face1, newTab);
......
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