Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Analyst WebApp
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Package Registry
Container Registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Repository analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
fidentis
Analyst WebApp
Commits
96078e98
There was an error fetching the commit references. Please try again later.
Commit
96078e98
authored
3 years ago
by
Matej Kovár
Browse files
Options
Downloads
Patches
Plain Diff
added javadocs
parent
7b65ab15
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.form
+1
-1
1 addition, 1 deletion
...rc/main/java/cz/fidentis/analyst/core/ProjectTopComp.form
GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.java
+96
-50
96 additions, 50 deletions
...rc/main/java/cz/fidentis/analyst/core/ProjectTopComp.java
with
97 additions
and
51 deletions
GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.form
+
1
−
1
View file @
96078e98
...
...
@@ -243,7 +243,7 @@
<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));"
>
<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();
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.editors2.TableModelEditor"
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);
 }
 }
 }
});"
>
<Table
columnCount=
"2"
rowCount=
"0"
>
<Column
editable=
"true"
title=
""
type=
"java.lang.Boolean"
/>
<Column
editable=
"false"
title=
"Models"
type=
"java.lang.Object"
/>
...
...
This diff is collapsed.
Click to expand it.
GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.java
+
96
−
50
View file @
96078e98
...
...
@@ -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
);
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment