Commit 3f5ff965 authored by Radek Ošlejšek's avatar Radek Ošlejšek
Browse files

Merge branch '201-refactor-project-management' into 'master'

Resolve "Refactor project management"

Closes #201

See merge request grp-fidentis/analyst2!217
parents 6909cabf fa1cd230
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -104,6 +104,11 @@
            <artifactId>HumanFace</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>Project</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>MeshModel</artifactId>
+5 −0
Original line number Diff line number Diff line
@@ -36,6 +36,11 @@ import org.openide.windows.TopComponent;
 *
 * @author Matej Kovar
 */
@TopComponent.Description(
        preferredID = "FaceTab",
        iconBase="analysis.png",
        persistenceType = TopComponent.PERSISTENCE_NEVER
)
public class FaceTab extends TopComponent {
    
    private final Canvas canvas ;
+7 −4
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ import org.openide.util.Exceptions;
import org.imgscalr.Scalr;

/**
 * List of faces TableModel
 * Table with faces loaded into the current project.
 * 
 * @author Matej Kovar
 */
@@ -118,13 +118,16 @@ public class ModelsTableModel extends DefaultTableModel {
    }
    
    public Class[] getTypes() {
        return types;}
        return types;
    }

    public void setTypes(Class[] types) {
        this.types = types;}
        this.types = types;
    }

    public boolean[] getCanEdit() {
        return canEdit;}
        return canEdit;
    }

    public void setCanEdit(boolean[] canEdit) {
        this.canEdit = canEdit;
+25 −24
Original line number Diff line number Diff line
@@ -34,6 +34,9 @@ import org.openide.util.Exceptions;
import org.openide.windows.WindowManager;

/**
 * Left-hand part of the project tab consisting of project toolbar and 
 * the {@code ModelsTableModel} (the table of faces).
 * This panel also handles the list of analytical tabs.
 * 
 * @author Matej Kovar
 */
@@ -42,11 +45,11 @@ public class ProjectPanel extends JPanel {
    public static final String SAVE_CURRENT_PROJECT_TITLE = "Save current project";
    public static final String SAVE_NEW_PROJECT_TITLE = "Save new project";
    
    private Project project;
    private final Project project;
    
    private static List<FaceTab> tabs = new ArrayList<>();
    private static final List<FaceTab> TABS = new ArrayList<>();
    
    private ModelsTableModel model = new ModelsTableModel();
    private final ModelsTableModel model = new ModelsTableModel();

    /* List of indexes of selected Rows */
    private List<Integer> selectedRows = new ArrayList<>();
@@ -67,7 +70,6 @@ public class ProjectPanel extends JPanel {
        table.getColumnModel().getColumn(2).setCellEditor(new TaskCellEditor());
        table.getColumnModel().getColumn(2).setCellRenderer(new TaskCellRenderer());
        table.repaint();
        
    }
    
    /**
@@ -392,8 +394,7 @@ public class ProjectPanel extends JPanel {

    private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeButtonActionPerformed
        if (selectedRows.isEmpty()) {
            JOptionPane.showMessageDialog(this, 
                            "No face chosen");
            JOptionPane.showMessageDialog(this, "No face chosen");
            return;
        }
        int answer = JOptionPane.showConfirmDialog(null,
@@ -420,7 +421,7 @@ public class ProjectPanel extends JPanel {
            String name = model.getValueAt(row, 1).toString();
            List<FaceTab> tabsToClose = new ArrayList<>();
            
            tabs.stream().filter(t -> (t.hasFace(name))).forEachOrdered(t -> {
            TABS.stream().filter(t -> (t.hasFace(name))).forEachOrdered(t -> {
                tabsToClose.add(t);
            });
            
@@ -437,7 +438,7 @@ public class ProjectPanel extends JPanel {
                }
                
                tabsToClose.get(0).close();
                tabs.remove(tabsToClose.remove(0));
                TABS.remove(tabsToClose.remove(0));
            }
            
            // Remove already loaded and stored face info
@@ -620,7 +621,7 @@ public class ProjectPanel extends JPanel {
        JComboBox comboBox = (JComboBox) e.getSource();
        String taskName = String.valueOf(comboBox.getSelectedItem());
        
        tabs.stream().filter(tab -> (tab.getName().equals(taskName))).forEachOrdered(tab -> {
        TABS.stream().filter(tab -> (tab.getName().equals(taskName))).forEachOrdered(tab -> {
            
            if (!tab.isOpened()) {
                tab.open();
@@ -658,7 +659,7 @@ public class ProjectPanel extends JPanel {
            }

            tab.close();
            tabs.remove(tab);
            TABS.remove(tab);
        }
        
    }
@@ -705,14 +706,14 @@ public class ProjectPanel extends JPanel {
        
        FaceTab newTab = new FaceTab(face, null, name, endTaskListener, project);
        
        if (!tabs.contains(newTab)) {
        if (!TABS.contains(newTab)) {
            
            if (camera != null) {
                newTab.setCamera(camera);
            }
            
            model.addNewTask(name, name);
            tabs.add(newTab);            
            TABS.add(newTab);            
            
            newTab.open();
            newTab.requestActive();
@@ -720,7 +721,7 @@ public class ProjectPanel extends JPanel {
            this.project.setSaved(false);    
            
        } else {
            tabs.stream().filter(t -> (t.equals(newTab))).forEachOrdered(t -> {
            TABS.stream().filter(t -> (t.equals(newTab))).forEachOrdered(t -> {
                if (!t.isOpened()) {
                    t.open();
                }
@@ -749,7 +750,7 @@ public class ProjectPanel extends JPanel {
        
        FaceTab newTab = new FaceTab(face1, face2, nameOfTab, endTaskListener, project);
        
        if (!tabs.contains(newTab)) {
        if (!TABS.contains(newTab)) {
            
            if (camera != null) {
                newTab.setCamera(camera);
@@ -758,7 +759,7 @@ public class ProjectPanel extends JPanel {
            model.addNewTask(face1.getShortName(), nameOfTab);
            model.addNewTask(face2.getShortName(), nameOfTab);
            
            tabs.add(newTab);
            TABS.add(newTab);
            
            newTab.open();
            newTab.requestActive();
@@ -766,7 +767,7 @@ public class ProjectPanel extends JPanel {
            this.project.setSaved(false);
            
        } else {
            tabs.stream().filter(t -> (t.equals(newTab))).forEachOrdered(t -> {    
            TABS.stream().filter(t -> (t.equals(newTab))).forEachOrdered(t -> {    
                if (!t.isOpened()) {
                    t.open();
                }
@@ -791,8 +792,8 @@ public class ProjectPanel extends JPanel {
        };
        
        FaceTab newTab = new FaceTab(faces, name, endTaskListener);
        if (!tabs.contains(newTab)) {
            tabs.add(newTab);
        if (!TABS.contains(newTab)) {
            TABS.add(newTab);
        }
        newTab.open();
        newTab.requestActive();
@@ -847,7 +848,7 @@ public class ProjectPanel extends JPanel {
     */
    public static void serializeTasks() {
        
        tabs.forEach(tab -> {
        TABS.forEach(tab -> {
            try {
                tab.serializeTask();
            } catch (IOException ex) {
@@ -865,9 +866,9 @@ public class ProjectPanel extends JPanel {
            serializeTasks();
        }
        
        while (!tabs.isEmpty()) {
            tabs.get(0).close();
            tabs.remove(0);
        while (!TABS.isEmpty()) {
            TABS.get(0).close();
            TABS.remove(0);
        }
        
        faceStatePanel.clearLoadedFaces();
+3 −3
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ import org.openide.windows.TopComponent;
)
@TopComponent.Description(
        preferredID = "ProjectTopComp",
        //iconBase="SET/PATH/TO/ICON/HERE",
        iconBase="checker.png",
        persistenceType = TopComponent.PERSISTENCE_ALWAYS
)
@TopComponent.Registration(mode = "editor", openAtStartup = true)
@@ -99,7 +99,7 @@ public final class ProjectTopComp extends TopComponent {
        this.requestActive();
        
        // Asks user whether he wants to create new project or open existing
        projectPanel.openExistingOrNewProject();
        //projectPanel.openExistingOrNewProject();
       
        this.repaint();
    }
Loading