diff --git a/Comparison/src/main/java/cz/fidentis/analyst/Project.java b/Comparison/src/main/java/cz/fidentis/analyst/Project.java index 03de5491dc95bb73c6b97b54b99b21bc991e5747..d40ee8b82c6ef39d2184bcb5d20b55845543b9e8 100644 --- a/Comparison/src/main/java/cz/fidentis/analyst/Project.java +++ b/Comparison/src/main/java/cz/fidentis/analyst/Project.java @@ -1,10 +1,12 @@ package cz.fidentis.analyst; import cz.fidentis.analyst.face.HumanFace; +import cz.fidentis.analyst.mesh.events.MeshEvent; import java.util.ArrayList; import java.util.Collections; import java.util.List; + /** * This class encapsulates data for a "comparison project", i.e., a project * enabling analysts to compare and investigate human faces. @@ -16,37 +18,6 @@ public class Project { //private HumanFace primaryFace; private List<HumanFace> faces = new ArrayList<>(); - - /** - * Returns primary face - * - * @return HumanFace primary face - - public HumanFace getPrimaryFace() { - return primaryFace; - } - - /** - * Sets new primary face - * - * @param primaryFace which will be new primary face - * @throws IllegalArgumentException when argument primaryFace is null - - public void setPrimaryFace(HumanFace primaryFace) { - if (primaryFace == null) { - throw new IllegalArgumentException("Primary face is null"); - } - this.primaryFace = primaryFace; - } - - /** - * Removes primary face and sets primaryFace attribute to null - - public void removePrimaryFace() { - this.primaryFace = null; - }*/ - - /** * Returns list of HumanFace secondary faces * @@ -132,5 +103,5 @@ public class Project { } return null; } - + } diff --git a/Comparison/src/main/java/cz/fidentis/analyst/face/HumanFace.java b/Comparison/src/main/java/cz/fidentis/analyst/face/HumanFace.java index e30af5c6a5f36e108a803273501ebd48972dab74..c8760f4f7ae02b823bd4f7370598900727d518cc 100644 --- a/Comparison/src/main/java/cz/fidentis/analyst/face/HumanFace.java +++ b/Comparison/src/main/java/cz/fidentis/analyst/face/HumanFace.java @@ -25,6 +25,7 @@ import java.util.Collections; import java.util.List; import java.util.ArrayList; import java.util.Objects; +import java.util.Observable; //import org.nustaq.serialization.FSTConfiguration; //import org.nustaq.serialization.FSTObjectInput; //import org.nustaq.serialization.FSTObjectOutput; @@ -50,7 +51,7 @@ import java.util.Objects; * * @author Radek Oslejsek */ -public class HumanFace implements MeshListener, Serializable { +public class HumanFace extends Observable implements MeshListener, Serializable { private MeshModel meshModel; @@ -116,6 +117,8 @@ public class HumanFace implements MeshListener, Serializable { */ public void registerListener(MeshListener listener) { eventBus.register(listener); + setChanged(); + notifyObservers(this); } /** @@ -125,6 +128,8 @@ public class HumanFace implements MeshListener, Serializable { */ public void unregisterListener(MeshListener listener) { eventBus.unregister(listener); + setChanged(); + notifyObservers(this); } /** @@ -182,6 +187,8 @@ public class HumanFace implements MeshListener, Serializable { */ public void setFeaturePoints(List<FeaturePoint> points) { featurePoints = points; + setChanged(); + notifyObservers(this); } /** @@ -193,6 +200,8 @@ public class HumanFace implements MeshListener, Serializable { */ public void loadFeaturePoints(String path, String fileName) throws IOException { featurePoints = FeaturePointImportService.importFeaturePoints(path, fileName); + setChanged(); + notifyObservers(this); } /** @@ -253,6 +262,8 @@ public class HumanFace implements MeshListener, Serializable { public KdTree computeKdTree(boolean recompute) { if (kdTree == null || recompute) { kdTree = new KdTree(new ArrayList<>(meshModel.getFacets())); + setChanged(); + notifyObservers(this); } return kdTree; } @@ -264,6 +275,8 @@ public class HumanFace implements MeshListener, Serializable { public KdTree removeKdTree() { KdTree ret = this.kdTree; this.kdTree = null; + setChanged(); + notifyObservers(this); return ret; } 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..3f067eddfb29ab7d44c9135dba79767022f933bc 100644 --- a/GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.form +++ b/GUI/src/main/java/cz/fidentis/analyst/core/ProjectTopComp.form @@ -21,7 +21,10 @@ --> -<Form version="1.8" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> +<Form version="1.9" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> + <Properties> + <Property name="opaque" type="boolean" value="true"/> + </Properties> <AuxValues> <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> @@ -32,250 +35,554 @@ <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> - <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,3,54,0,0,4,-55"/> </AuxValues> - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" max="-2" attributes="0"> + <Component id="jPanel5" max="32767" attributes="0"/> + <Component id="jScrollPane1" max="32767" attributes="0"/> + </Group> + <EmptySpace pref="18" max="32767" attributes="0"/> + <Group type="103" groupAlignment="0" max="-2" attributes="0"> + <Component id="jPanel1" max="32767" attributes="0"/> + <Component id="infoPanel" max="32767" attributes="0"/> + </Group> + <EmptySpace min="-2" pref="25" max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Component id="jPanel5" min="-2" pref="43" max="-2" attributes="0"/> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Group type="103" groupAlignment="1" max="-2" attributes="0"> + <Component id="jScrollPane1" min="-2" max="-2" attributes="0"/> + <Group type="102" attributes="0"> + <Component id="jPanel1" max="32767" attributes="0"/> + <EmptySpace type="separate" max="-2" attributes="0"/> + <Component id="infoPanel" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + <EmptySpace pref="23" max="32767" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> <SubComponents> - <Container class="javax.swing.JPanel" name="jPanel1"> + <Container class="javax.swing.JPanel" name="jPanel5"> + <Properties> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo"> + <EtchetBorder/> + </Border> + </Property> + <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[0, 0]"/> + </Property> + </Properties> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/> + <SubComponents> + <Component class="javax.swing.JButton" name="addButton1"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="12" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.addButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="addButton1MouseClicked"/> + </Events> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> + <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="20" ipadY="0" insetsTop="16" insetsLeft="16" insetsBottom="13" insetsRight="4" anchor="13" weightX="0.0" weightY="0.0"/> + </Constraint> + </Constraints> + </Component> + <Component class="javax.swing.JButton" name="removeButton1"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="12" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.removeButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="removeButton1MouseClicked"/> + </Events> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> + <GridBagConstraints gridX="1" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="22" insetsBottom="13" insetsRight="4" anchor="18" weightX="0.0" weightY="0.0"/> + </Constraint> + </Constraints> + </Component> + <Component class="javax.swing.JButton" name="selectAllButton1"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="12" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.selectAllButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="selectAllButton1MouseClicked"/> + </Events> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> + <GridBagConstraints gridX="2" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="22" insetsBottom="13" insetsRight="4" anchor="18" weightX="0.0" weightY="0.0"/> + </Constraint> + </Constraints> + </Component> + <Component class="javax.swing.JButton" name="deselectAllButton1"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="12" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.deselectAllButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="deselectAllButton1MouseClicked"/> + </Events> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> + <GridBagConstraints gridX="3" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="22" insetsBottom="13" insetsRight="4" anchor="18" weightX="0.0" weightY="0.0"/> + </Constraint> + </Constraints> + </Component> + <Component class="javax.swing.JButton" name="inflateButton1"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="12" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.inflateButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="alignmentX" type="float" value="0.5"/> + </Properties> + <Events> + <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="inflateButton1MouseClicked"/> + </Events> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> + <GridBagConstraints gridX="4" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="22" insetsBottom="13" insetsRight="4" anchor="18" weightX="0.0" weightY="0.0"/> + </Constraint> + </Constraints> + </Component> + <Component class="javax.swing.JButton" name="oneOnOneButton1"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="12" style="1"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.oneOnOneButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="alignmentX" type="float" value="0.5"/> + </Properties> + <Events> + <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="oneOnOneButton1MouseClicked"/> + </Events> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> + <GridBagConstraints gridX="5" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="55" insetsBottom="13" insetsRight="4" anchor="18" weightX="0.0" weightY="0.0"/> + </Constraint> + </Constraints> + </Component> + <Component class="javax.swing.JButton" name="analyseButton1"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="12" style="1"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.analyseButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="analyseButton1MouseClicked"/> + </Events> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> + <GridBagConstraints gridX="6" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="16" insetsBottom="13" insetsRight="4" anchor="10" weightX="0.0" weightY="0.0"/> + </Constraint> + </Constraints> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JScrollPane" name="jScrollPane1"> <Properties> <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[812, 750]"/> + </Property> + </Properties> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <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));
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);
 }
 }
 }
});"> + <Font name="Tahoma" size="18" style="0"/> + </Property> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor" postCode="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);"> + <Connection code="model" type="code"/> + </Property> + <Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor"> + <TableColumnModel selectionModel="0"/> + </Property> + <Property name="dragEnabled" type="boolean" value="true"/> + <Property name="rowHeight" type="int" value="40"/> + <Property name="selectionBackground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> + <Color blue="ff" green="cc" red="66" type="rgb"/> + </Property> + <Property name="selectionMode" type="int" value="0"/> + <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor"> + <TableHeader reorderingAllowed="false" resizingAllowed="true"/> + </Property> + </Properties> + <Events> + <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jTable1MouseClicked"/> + </Events> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="infoPanel"> + <Properties> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo"> + <EtchetBorder/> + </Border> + </Property> + <Property name="focusable" type="boolean" value="false"/> + <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[0, 0]"/> + </Property> + <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> <Dimension value="[0, 0]"/> </Property> </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="Center"/> - </Constraint> - </Constraints> + <AuxValues> + <AuxValue name="JavaCodeGenerator_InitCodePost" type="java.lang.String" value="infoPanel.setVisible(false);"/> + </AuxValues> <Layout> <DimensionLayout dim="0"> <Group type="103" groupAlignment="0" attributes="0"> <Group type="102" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Component id="jLabel1" min="-2" max="-2" attributes="0"/> + <EmptySpace max="32767" attributes="0"/> + </Group> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace min="-2" pref="23" max="-2" attributes="0"/> + <Component id="jLabel3" min="-2" max="-2" attributes="0"/> + <EmptySpace min="0" pref="34" max="32767" attributes="0"/> + </Group> + <Group type="102" alignment="1" attributes="0"> + <EmptySpace max="32767" attributes="0"/> <Group type="103" groupAlignment="0" attributes="0"> - <Component id="jPanel2" min="-2" max="-2" attributes="0"/> - <Component id="jPanel5" min="-2" pref="783" max="-2" attributes="0"/> + <Component id="jRadioButton4" min="-2" pref="189" max="-2" attributes="0"/> + <Component id="jRadioButton3" min="-2" pref="189" max="-2" attributes="0"/> + <Component id="jRadioButton5" min="-2" pref="189" max="-2" attributes="0"/> + <Component id="jRadioButton1" min="-2" pref="189" max="-2" attributes="0"/> + <Component id="jRadioButton2" min="-2" pref="189" max="-2" attributes="0"/> </Group> - <EmptySpace min="0" pref="442" max="32767" attributes="0"/> + <EmptySpace min="-2" pref="66" max="-2" attributes="0"/> </Group> </Group> </DimensionLayout> <DimensionLayout dim="1"> <Group type="103" groupAlignment="0" attributes="0"> <Group type="102" alignment="0" attributes="0"> - <Component id="jPanel5" min="-2" pref="56" max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/> - <Component id="jPanel2" max="32767" attributes="0"/> + <Component id="jLabel1" min="-2" max="-2" attributes="0"/> + <EmptySpace type="separate" max="-2" attributes="0"/> + <Component id="jRadioButton2" min="-2" pref="29" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="jRadioButton1" min="-2" pref="29" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="jRadioButton5" min="-2" pref="29" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="jRadioButton3" min="-2" pref="29" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="jRadioButton4" min="-2" pref="29" max="-2" attributes="0"/> + <EmptySpace type="separate" max="-2" attributes="0"/> + <Component id="jLabel3" min="-2" max="-2" attributes="0"/> + <EmptySpace pref="28" max="32767" attributes="0"/> </Group> </Group> </DimensionLayout> </Layout> <SubComponents> - <Container class="javax.swing.JPanel" name="jPanel5"> + <Component class="javax.swing.JRadioButton" name="jRadioButton1"> <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="14" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jRadioButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> - <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo"> - <EtchetBorder/> - </Border> + <Border info="null"/> </Property> </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jRadioButton1ActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JRadioButton" name="jRadioButton2"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="14" style="0"/> + </Property> + <Property name="selected" type="boolean" value="true"/> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jRadioButton2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="null"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jRadioButton2ActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JRadioButton" name="jRadioButton3"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="14" style="0"/> + </Property> + <Property name="selected" type="boolean" value="true"/> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jRadioButton3.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="null"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JRadioButton" name="jRadioButton4"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="14" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jRadioButton4.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="null"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel1"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="24" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JRadioButton" name="jRadioButton5"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="14" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jRadioButton5.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="null"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel3"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="14" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jLabel3.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel1"> + <Properties> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo"> + <EtchetBorder/> + </Border> + </Property> + </Properties> - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/> - <SubComponents> - <Component class="javax.swing.JButton" name="addButton1"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Tahoma" size="12" style="0"/> - </Property> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.addButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Property> - </Properties> - <Events> - <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="addButton1MouseClicked"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="20" ipadY="0" insetsTop="16" insetsLeft="16" insetsBottom="13" insetsRight="4" anchor="13" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JButton" name="removeButton1"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Tahoma" size="12" style="0"/> - </Property> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.removeButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Property> - </Properties> - <Events> - <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="removeButton1MouseClicked"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="22" insetsBottom="13" insetsRight="4" anchor="18" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JButton" name="selectAllButton1"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Tahoma" size="12" style="0"/> - </Property> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.selectAllButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Property> - </Properties> - <Events> - <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="selectAllButton1MouseClicked"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="2" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="22" insetsBottom="13" insetsRight="4" anchor="18" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JButton" name="deselectAllButton1"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Tahoma" size="12" style="0"/> - </Property> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.deselectAllButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Property> - </Properties> - <Events> - <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="deselectAllButton1MouseClicked"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="3" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="22" insetsBottom="13" insetsRight="4" anchor="18" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JButton" name="inflateButton1"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Tahoma" size="12" style="0"/> - </Property> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.inflateButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Property> - <Property name="alignmentX" type="float" value="0.5"/> - </Properties> - <Events> - <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="inflateButton1MouseClicked"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="4" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="22" insetsBottom="13" insetsRight="4" anchor="18" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JButton" name="oneOnOneButton1"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Tahoma" size="12" style="1"/> - </Property> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.oneOnOneButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Property> - <Property name="alignmentX" type="float" value="0.5"/> - </Properties> - <Events> - <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="oneOnOneButton1MouseClicked"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="5" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="55" insetsBottom="13" insetsRight="4" anchor="18" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JButton" name="analyseButton1"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Tahoma" size="12" style="1"/> - </Property> - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> - <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.analyseButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - </Property> - </Properties> - <Events> - <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="analyseButton1MouseClicked"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="6" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="16" insetsBottom="13" insetsRight="4" anchor="10" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - </SubComponents> - </Container> - <Container class="javax.swing.JPanel" name="jPanel2"> - - <Layout> - <DimensionLayout dim="0"> - <Group type="103" groupAlignment="0" attributes="0"> - <Group type="102" alignment="0" attributes="0"> - <Component id="jScrollPane1" min="-2" pref="782" max="-2" attributes="0"/> - <EmptySpace min="0" pref="0" max="32767" attributes="0"/> + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace min="-2" pref="20" max="-2" attributes="0"/> + <Component id="jLabel2" min="-2" max="-2" attributes="0"/> + <EmptySpace max="32767" attributes="0"/> + </Group> + <Group type="102" alignment="1" attributes="0"> + <EmptySpace max="32767" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="1" attributes="0"> + <Group type="103" groupAlignment="1" attributes="0"> + <Component id="jCheckBox7" min="-2" pref="179" max="-2" attributes="0"/> + <Component id="jCheckBox6" min="-2" pref="179" max="-2" attributes="0"/> + <Component id="jCheckBox5" min="-2" pref="179" max="-2" attributes="0"/> + <Component id="jCheckBox4" min="-2" pref="179" max="-2" attributes="0"/> + <Component id="jCheckBox3" min="-2" pref="179" max="-2" attributes="0"/> + <Component id="jCheckBox2" min="-2" pref="179" max="-2" attributes="0"/> + <Component id="jCheckBox1" min="-2" pref="179" max="-2" attributes="0"/> + </Group> + <EmptySpace min="-2" pref="52" max="-2" attributes="0"/> + </Group> + <Group type="102" alignment="1" attributes="0"> + <Component id="jButton1" min="-2" max="-2" attributes="0"/> + <EmptySpace min="-2" pref="41" max="-2" attributes="0"/> + </Group> </Group> </Group> - </DimensionLayout> - <DimensionLayout dim="1"> - <Group type="103" groupAlignment="0" attributes="0"> - <Component id="jScrollPane1" alignment="0" pref="760" max="32767" attributes="0"/> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace min="-2" pref="21" max="-2" attributes="0"/> + <Component id="jLabel2" min="-2" max="-2" attributes="0"/> + <EmptySpace min="-2" pref="68" max="-2" attributes="0"/> + <Component id="jCheckBox4" min="-2" max="-2" attributes="0"/> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Component id="jCheckBox1" min="-2" max="-2" attributes="0"/> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Component id="jCheckBox2" min="-2" max="-2" attributes="0"/> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Component id="jCheckBox3" min="-2" max="-2" attributes="0"/> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Component id="jCheckBox7" min="-2" max="-2" attributes="0"/> + <EmptySpace min="-2" pref="3" max="-2" attributes="0"/> + <Component id="jCheckBox5" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="jCheckBox6" min="-2" max="-2" attributes="0"/> + <EmptySpace min="-2" pref="28" max="-2" attributes="0"/> + <Component id="jButton1" min="-2" max="-2" attributes="0"/> + <EmptySpace max="32767" attributes="0"/> </Group> - </DimensionLayout> - </Layout> - <SubComponents> - <Container class="javax.swing.JScrollPane" name="jScrollPane1"> - <AuxValues> - <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> - </AuxValues> - - <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> - <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));"> - <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> - <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> - </Property> - <Property name="dragEnabled" type="boolean" value="true"/> - <Property name="rowHeight" type="int" value="40"/> - <Property name="rowSelectionAllowed" type="boolean" value="false"/> - <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor"> - <TableHeader reorderingAllowed="false" resizingAllowed="true"/> - </Property> - </Properties> - </Component> - </SubComponents> - </Container> - </SubComponents> - </Container> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JLabel" name="jLabel2"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="24" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jLabel2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JCheckBox" name="jCheckBox1"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="14" style="0"/> + </Property> + <Property name="selected" type="boolean" value="true"/> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jCheckBox1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JCheckBox" name="jCheckBox2"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="14" style="0"/> + </Property> + <Property name="selected" type="boolean" value="true"/> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jCheckBox2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JCheckBox" name="jCheckBox3"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="14" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jCheckBox3.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jCheckBox3ActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JCheckBox" name="jCheckBox4"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="14" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jCheckBox4.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JCheckBox" name="jCheckBox5"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="14" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jCheckBox5.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JCheckBox" name="jCheckBox6"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="14" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jCheckBox6.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JCheckBox" name="jCheckBox7"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="14" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jCheckBox7.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JButton" name="jButton1"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Tahoma" size="14" style="0"/> + </Property> + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="cz/fidentis/analyst/core/Bundle.properties" key="ProjectTopComp.jButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> </SubComponents> </Container> </SubComponents> 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 5f952ae152e904be8dc6bef03f462917a4d618b3..5399026493ceaeea82c1f148098adb5aa590d091 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.ModelsTableModel; import java.io.File; import java.io.IOException; import java.nio.file.Path; @@ -63,13 +64,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; + private ModelsTableModel model = new ModelsTableModel(new Object[]{"", "Models", "KD-tree"}, 0);; /* 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 */ + clicked on selection buttons (TEMPORARY SOLUTION) */ private Boolean byUser = true; /** @@ -94,7 +95,6 @@ public final class ProjectTopComp extends TopComponent { private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; - jPanel1 = new javax.swing.JPanel(); jPanel5 = new javax.swing.JPanel(); addButton1 = new javax.swing.JButton(); removeButton1 = new javax.swing.JButton(); @@ -103,15 +103,31 @@ public final class ProjectTopComp extends TopComponent { inflateButton1 = new javax.swing.JButton(); oneOnOneButton1 = new javax.swing.JButton(); analyseButton1 = new javax.swing.JButton(); - jPanel2 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); - - setLayout(new java.awt.BorderLayout()); - - jPanel1.setPreferredSize(new java.awt.Dimension(0, 0)); + infoPanel = new javax.swing.JPanel(); + jRadioButton1 = new javax.swing.JRadioButton(); + jRadioButton2 = new javax.swing.JRadioButton(); + jRadioButton3 = new javax.swing.JRadioButton(); + jRadioButton4 = new javax.swing.JRadioButton(); + jLabel1 = new javax.swing.JLabel(); + jRadioButton5 = new javax.swing.JRadioButton(); + jLabel3 = new javax.swing.JLabel(); + jPanel1 = new javax.swing.JPanel(); + jLabel2 = new javax.swing.JLabel(); + jCheckBox1 = new javax.swing.JCheckBox(); + jCheckBox2 = new javax.swing.JCheckBox(); + jCheckBox3 = new javax.swing.JCheckBox(); + jCheckBox4 = new javax.swing.JCheckBox(); + jCheckBox5 = new javax.swing.JCheckBox(); + jCheckBox6 = new javax.swing.JCheckBox(); + jCheckBox7 = new javax.swing.JCheckBox(); + jButton1 = new javax.swing.JButton(); + + setOpaque(true); jPanel5.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + jPanel5.setMinimumSize(new java.awt.Dimension(0, 0)); jPanel5.setLayout(new java.awt.GridBagLayout()); addButton1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N @@ -214,40 +230,12 @@ public final class ProjectTopComp extends TopComponent { gridBagConstraints.insets = new java.awt.Insets(16, 16, 13, 4); jPanel5.add(analyseButton1, gridBagConstraints); + jScrollPane1.setPreferredSize(new java.awt.Dimension(812, 750)); + jTable1.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N 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 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; - } - }); - //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) { @@ -264,76 +252,242 @@ public final class ProjectTopComp extends TopComponent { } } }); + jTable1.setModel(model); + 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); jTable1.setDragEnabled(true); jTable1.setRowHeight(40); - jTable1.setRowSelectionAllowed(false); + jTable1.setSelectionBackground(new java.awt.Color(102, 204, 255)); + jTable1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); jTable1.getTableHeader().setReorderingAllowed(false); + jTable1.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jTable1MouseClicked(evt); + } + }); 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); - jPanel2Layout.setHorizontalGroup( - jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 782, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, Short.MAX_VALUE)) + infoPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + infoPanel.setFocusable(false); + infoPanel.setMaximumSize(new java.awt.Dimension(0, 0)); + infoPanel.setMinimumSize(new java.awt.Dimension(0, 0)); + infoPanel.setVisible(false); + + jRadioButton1.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(jRadioButton1, org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jRadioButton1.text")); // NOI18N + jRadioButton1.setBorder(null); + jRadioButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jRadioButton1ActionPerformed(evt); + } + }); + + jRadioButton2.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N + jRadioButton2.setSelected(true); + org.openide.awt.Mnemonics.setLocalizedText(jRadioButton2, org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jRadioButton2.text")); // NOI18N + jRadioButton2.setBorder(null); + jRadioButton2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jRadioButton2ActionPerformed(evt); + } + }); + + jRadioButton3.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N + jRadioButton3.setSelected(true); + org.openide.awt.Mnemonics.setLocalizedText(jRadioButton3, org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jRadioButton3.text")); // NOI18N + jRadioButton3.setBorder(null); + + jRadioButton4.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(jRadioButton4, org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jRadioButton4.text")); // NOI18N + jRadioButton4.setBorder(null); + + jLabel1.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jLabel1.text")); // NOI18N + + jRadioButton5.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(jRadioButton5, org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jRadioButton5.text")); // NOI18N + jRadioButton5.setBorder(null); + + jLabel3.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jLabel3.text")); // NOI18N + + javax.swing.GroupLayout infoPanelLayout = new javax.swing.GroupLayout(infoPanel); + infoPanel.setLayout(infoPanelLayout); + infoPanelLayout.setHorizontalGroup( + infoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(infoPanelLayout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(infoPanelLayout.createSequentialGroup() + .addGap(23, 23, 23) + .addComponent(jLabel3) + .addGap(0, 34, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, infoPanelLayout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(infoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jRadioButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 189, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jRadioButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 189, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jRadioButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 189, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jRadioButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 189, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jRadioButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 189, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(66, 66, 66)) ); - jPanel2Layout.setVerticalGroup( - jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 760, Short.MAX_VALUE) + infoPanelLayout.setVerticalGroup( + infoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(infoPanelLayout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1) + .addGap(18, 18, 18) + .addComponent(jRadioButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jRadioButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jRadioButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jRadioButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jRadioButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(jLabel3) + .addContainerGap(28, Short.MAX_VALUE)) ); + jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + + jLabel2.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jLabel2.text")); // NOI18N + + jCheckBox1.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N + jCheckBox1.setSelected(true); + org.openide.awt.Mnemonics.setLocalizedText(jCheckBox1, org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jCheckBox1.text")); // NOI18N + + jCheckBox2.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N + jCheckBox2.setSelected(true); + org.openide.awt.Mnemonics.setLocalizedText(jCheckBox2, org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jCheckBox2.text")); // NOI18N + + jCheckBox3.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(jCheckBox3, org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jCheckBox3.text")); // NOI18N + jCheckBox3.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jCheckBox3ActionPerformed(evt); + } + }); + + jCheckBox4.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(jCheckBox4, org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jCheckBox4.text")); // NOI18N + + jCheckBox5.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(jCheckBox5, org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jCheckBox5.text")); // NOI18N + + jCheckBox6.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(jCheckBox6, org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jCheckBox6.text")); // NOI18N + + jCheckBox7.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(jCheckBox7, org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jCheckBox7.text")); // NOI18N + + jButton1.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(jButton1, org.openide.util.NbBundle.getMessage(ProjectTopComp.class, "ProjectTopComp.jButton1.text")); // NOI18N + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(20, 20, 20) + .addComponent(jLabel2) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, 783, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(0, 442, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jCheckBox7, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jCheckBox6, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jCheckBox5, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jCheckBox4, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jCheckBox3, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jCheckBox2, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jCheckBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(52, 52, 52)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addComponent(jButton1) + .addGap(41, 41, 41)))) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(21, 21, 21) + .addComponent(jLabel2) + .addGap(68, 68, 68) + .addComponent(jCheckBox4) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jCheckBox1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jCheckBox2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jCheckBox3) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jCheckBox7) + .addGap(3, 3, 3) + .addComponent(jCheckBox5) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(jCheckBox6) + .addGap(28, 28, 28) + .addComponent(jButton1) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); - add(jPanel1, java.awt.BorderLayout.CENTER); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(infoPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGap(25, 25, 25)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(layout.createSequentialGroup() + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGap(18, 18, 18) + .addComponent(infoPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap(23, Short.MAX_VALUE)) + ); }// </editor-fold>//GEN-END:initComponents /** - * Adds new model - * @param evt starts function for loading model + * Opens analysis of one selected face, otherwise pops message dialog that + * you should select just one face + * @param evt */ - private void addButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_addButton1MouseClicked - loadModel(); - }//GEN-LAST:event_addButton1MouseClicked + private void analyseButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_analyseButton1MouseClicked - /** - * Removes selected models from list and project - * @param evt Removes selected faces - */ - private void removeButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_removeButton1MouseClicked + 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 - Collections.sort(selectedRows, Collections.reverseOrder()); - 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 @@ -355,18 +509,24 @@ public final class ProjectTopComp extends TopComponent { }//GEN-LAST:event_oneOnOneButton1MouseClicked /** - * Selects all models from list of models + * Inflates models (selected will be deselected and vice versa) * @param evt */ - private void selectAllButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_selectAllButton1MouseClicked + private void inflateButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_inflateButton1MouseClicked byUser = false; for (int i = 0; i < model.getRowCount(); i++) { - model.setValueAt(true, i, 0); + if (model.getValueAt(i, 0) == (Object) true) { + model.setValueAt(false, i, 0); + } else { + model.setValueAt(true, i, 0); + } } - selectedRows = IntStream.range(0, model.getRowCount()).boxed().collect(Collectors.toList()); - byUser = true; - }//GEN-LAST:event_selectAllButton1MouseClicked + List<Integer> allRows = IntStream.range(0, model.getRowCount()).boxed().collect(Collectors.toList()); + allRows.removeAll(selectedRows); + selectedRows = allRows; + byUser = true; + }//GEN-LAST:event_inflateButton1MouseClicked /** * Deselects all models from list of models @@ -382,51 +542,91 @@ public final class ProjectTopComp extends TopComponent { }//GEN-LAST:event_deselectAllButton1MouseClicked /** - * Inflates models (selected will be deselected and vice versa) + * Selects all models from list of models * @param evt */ - private void inflateButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_inflateButton1MouseClicked + private void selectAllButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_selectAllButton1MouseClicked byUser = false; 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); - } + model.setValueAt(true, i, 0); } - - List<Integer> allRows = IntStream.range(0, model.getRowCount()).boxed().collect(Collectors.toList()); - allRows.removeAll(selectedRows); - selectedRows = allRows; + selectedRows = IntStream.range(0, model.getRowCount()).boxed().collect(Collectors.toList()); byUser = true; - }//GEN-LAST:event_inflateButton1MouseClicked + }//GEN-LAST:event_selectAllButton1MouseClicked + +//GEN-FIRST:event_removeButton1MouseClicked + /** + * Removes selected models from list and project + * @param evt Removes selected faces + */ + private void removeButton1MouseClicked(java.awt.event.MouseEvent evt) { + + Collections.sort(selectedRows, Collections.reverseOrder()); + 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 analysis of one selected face, otherwise pops message dialog that - * you should select just one face - * @param evt + * Adds new model + * @param evt starts function for loading model */ - private void analyseButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_analyseButton1MouseClicked + private void addButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_addButton1MouseClicked + loadModel(); + }//GEN-LAST:event_addButton1MouseClicked - if (selectedRows.size() == 1) { + private void jRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton1ActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_jRadioButton1ActionPerformed - String name = model.getValueAt(selectedRows.get(0), 1).toString(); - HumanFace face = project.getFaceByName(name); - createSingleFaceTab(face, name); + private void jRadioButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton2ActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_jRadioButton2ActionPerformed + + private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MouseClicked + //javax.swing.JTable source = (javax.swing.JTable)evt.getSource(); + //int row = source.rowAtPoint(evt.getPoint()); + if (jTable1.getSelectedRow() == -1) { + infoPanel.setVisible(false); } else { - JOptionPane.showMessageDialog(this, "Select one model"); + infoPanel.setVisible(true); } + }//GEN-LAST:event_jTable1MouseClicked - }//GEN-LAST:event_analyseButton1MouseClicked + private void jCheckBox3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox3ActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_jCheckBox3ActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton addButton1; private javax.swing.JButton analyseButton1; private javax.swing.JButton deselectAllButton1; private javax.swing.JButton inflateButton1; + private javax.swing.JPanel infoPanel; + private javax.swing.JButton jButton1; + private javax.swing.JCheckBox jCheckBox1; + private javax.swing.JCheckBox jCheckBox2; + private javax.swing.JCheckBox jCheckBox3; + private javax.swing.JCheckBox jCheckBox4; + private javax.swing.JCheckBox jCheckBox5; + private javax.swing.JCheckBox jCheckBox6; + private javax.swing.JCheckBox jCheckBox7; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; private javax.swing.JPanel jPanel1; - private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel5; + private javax.swing.JRadioButton jRadioButton1; + private javax.swing.JRadioButton jRadioButton2; + private javax.swing.JRadioButton jRadioButton3; + private javax.swing.JRadioButton jRadioButton4; + private javax.swing.JRadioButton jRadioButton5; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; private javax.swing.JButton oneOnOneButton1; @@ -459,131 +659,61 @@ 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); + face.addObserver(model); + model.addRow(new Object[]{false, name, false}); + } else { + JOptionPane.showMessageDialog(this, "Model with this name is already loaded"); + } } } } - /** - * 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 * @param name name of the tab (name of the model) */ private void createSingleFaceTab(HumanFace face, String name) { + byUser = false; SingleFaceTab newTab = new SingleFaceTab(face, name); this.singleFaceTabs.put(face, newTab); newTab.open(); newTab.requestActive(); + byUser = true; } /** @@ -593,10 +723,12 @@ public final class ProjectTopComp extends TopComponent { * @param name name of the tab */ private void createFaceToFaceTab(HumanFace face1, HumanFace face2, String name) { + byUser = false; FaceToFaceTab newTab = new FaceToFaceTab(face1, face2, name); this.faceToFaceTabs.put(face1, newTab); this.faceToFaceTabs.put(face2, newTab); newTab.open(); newTab.requestActive(); + byUser = true; } } diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/ModelsTableModel.java b/GUI/src/main/java/cz/fidentis/analyst/gui/ModelsTableModel.java new file mode 100644 index 0000000000000000000000000000000000000000..cba49995d18f249e84404fe034ec71ee68553478 --- /dev/null +++ b/GUI/src/main/java/cz/fidentis/analyst/gui/ModelsTableModel.java @@ -0,0 +1,74 @@ +/* + * 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 cz.fidentis.analyst.face.HumanFace; +import java.util.Observable; +import java.util.Observer; +import javax.swing.table.DefaultTableModel; + +/** + * + * @author Matej Kovar + */ +public class ModelsTableModel extends DefaultTableModel implements Observer { + + /** + * Constructor for table model + * @param columnNames names of Columns + * @param rowCount number of rows + */ + public ModelsTableModel(Object[] columnNames, int rowCount) { + super(columnNames, rowCount); + } + + + private Class[] types = new Class [] { + java.lang.Boolean.class, java.lang.String.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; + } + + @Override + public void update(Observable o, Object o1) { + HumanFace face = (HumanFace)o1; + String name = face.getShortName(); + boolean hasKD = false; + if (face.getKdTree() != null) { + hasKD = true; + } + for (int i = 0; i < getRowCount(); i++) { + if (getValueAt(i, 1).equals(name)) { + this.setValueAt(hasKD, i, 2); + break; + } + } + } + +} diff --git a/GUI/src/main/resources/cz/fidentis/analyst/core/Bundle.properties b/GUI/src/main/resources/cz/fidentis/analyst/core/Bundle.properties index 4255855dbc53c394dc5f36136ce2dd288f4f51f2..dc62f8abca63819b7fb85355c33979cdd5b50c26 100644 --- a/GUI/src/main/resources/cz/fidentis/analyst/core/Bundle.properties +++ b/GUI/src/main/resources/cz/fidentis/analyst/core/Bundle.properties @@ -9,15 +9,31 @@ PostRegistrationCP.rotationZFTF.text=0 PostRegistrationCP.rotationYFTF.text=0 PostRegistrationCP.jFormattedTextField1.text=jFormattedTextField1 SingleFaceTab.jButton2.text=jButton2 -ProjectTopComp.addButton1.text=Add -ProjectTopComp.inflateButton1.text=Inflate -ProjectTopComp.deselectAllButton1.text=Deselect all -ProjectTopComp.selectAllButton1.text=Select all -ProjectTopComp.removeButton1.text=Remove ProjectTopComp.jTable1.columnModel.title0=Title 1 ProjectTopComp.jTable1.columnModel.title3=Title 4 ProjectTopComp.jTable1.columnModel.title1=Title 2 ProjectTopComp.jTable1.columnModel.title0_1=Models ProjectTopComp.jTable1.columnModel.title1_1= -ProjectTopComp.oneOnOneButton1.text=Open 1:1 ProjectTopComp.analyseButton1.text=Analyse +ProjectTopComp.oneOnOneButton1.text=Open 1:1 +ProjectTopComp.inflateButton1.text=Inflate +ProjectTopComp.deselectAllButton1.text=Deselect all +ProjectTopComp.selectAllButton1.text=Select all +ProjectTopComp.removeButton1.text=Remove +ProjectTopComp.addButton1.text=Add +ProjectTopComp.jRadioButton1.text=mesh model registered +ProjectTopComp.jRadioButton2.text=has KD Tree calculated +ProjectTopComp.jRadioButton3.text=... +ProjectTopComp.jRadioButton4.text=... +ProjectTopComp.jLabel1.text=Face state +ProjectTopComp.jRadioButton5.text=... +ProjectTopComp.jLabel2.text=Filter +ProjectTopComp.jCheckBox1.text=which has kd-tree +ProjectTopComp.jLabel3.text=Average Hausdorff distance of selected faces : xx +ProjectTopComp.jCheckBox2.text=with feature points +ProjectTopComp.jCheckBox3.text=... +ProjectTopComp.jCheckBox4.text=registered +ProjectTopComp.jCheckBox5.text=... +ProjectTopComp.jCheckBox6.text=... +ProjectTopComp.jCheckBox7.text=... +ProjectTopComp.jButton1.text=Apply filters