package tk.amberide.ide.gui.misc; import tk.amberide.Amber; import tk.amberide.Storage; import tk.amberide.ide.gui.dialogs.NewProjectDialog; import java.awt.Container; import java.io.File; import java.util.Map; import javax.swing.JFileChooser; import javax.swing.table.DefaultTableModel; /** * * @author Tudor */ public class StartPagePanel extends javax.swing.JPanel { /** * Creates new form StartPane */ public StartPagePanel() { initComponents(); DefaultTableModel model = (DefaultTableModel) recentProjectsTable.getModel(); for (Map.Entry<String, String> entry : Storage.recentProjects.entrySet()) { model.addRow(new Object[]{entry.getKey(), entry.getValue()}); } if (recentProjectsTable.getModel().getRowCount() > 0) { recentProjectsTable.setRowSelectionInterval(0, 0); } } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jPanel2 = new javax.swing.JPanel(); jPanel1 = new javax.swing.JPanel(); jPanel3 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jScrollPane2 = new javax.swing.JScrollPane(); recentProjectsTable = new javax.swing.JTable(); openProjectButton = new javax.swing.JButton(); newProjectButton = new javax.swing.JButton(); setLayout(new java.awt.BorderLayout()); jPanel2.setBackground(new java.awt.Color(246, 246, 246)); jPanel1.setBackground(new java.awt.Color(102, 153, 204)); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 30, Short.MAX_VALUE) ); jPanel3.setBackground(new java.awt.Color(246, 246, 246)); jPanel3.setMaximumSize(new java.awt.Dimension(0, 0)); jPanel3.setName("Start Page"); // NOI18N jPanel3.setPreferredSize(new java.awt.Dimension(0, 0)); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N jLabel1.setText("Open an Existing Project"); recentProjectsTable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Path", "Modified" } ) { Class[] types = new Class [] { java.lang.String.class, java.lang.Object.class }; boolean[] canEdit = new boolean [] { false, true }; public Class getColumnClass(int columnIndex) { return types [columnIndex]; } public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); recentProjectsTable.setFillsViewportHeight(true); recentProjectsTable.setMaximumSize(new java.awt.Dimension(2147483647, 2147483647)); recentProjectsTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); recentProjectsTable.getTableHeader().setReorderingAllowed(false); jScrollPane2.setViewportView(recentProjectsTable); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane2) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel1) .addGap(0, 491, Short.MAX_VALUE))) .addContainerGap()) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 248, Short.MAX_VALUE)) ); openProjectButton.setText("Open Project"); openProjectButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { openProjectButtonActionPerformed(evt); } }); newProjectButton.setText("New Project"); newProjectButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { newProjectButtonActionPerformed(evt); } }); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, 648, Short.MAX_VALUE) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addComponent(newProjectButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(openProjectButton) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(35, 35, 35) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, 279, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(openProjectButton) .addComponent(newProjectButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(6, 6, 6)) ); add(jPanel2, java.awt.BorderLayout.CENTER); }// </editor-fold>//GEN-END:initComponents private void newProjectButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newProjectButtonActionPerformed new NewProjectDialog(Amber.getUI()).setVisible(true); Container parent = this.getParent(); if (parent != null) { parent.remove(this); } }//GEN-LAST:event_newProjectButtonActionPerformed private void openProjectButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openProjectButtonActionPerformed if (recentProjectsTable.getModel().getRowCount() == 0) { // There are no projects, so create one JFileChooser browser = new JFileChooser("Choose project location..."); browser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); browser.setApproveButtonText("Choose directory"); browser.setVisible(true); if (browser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { Amber.initializeProject(browser.getSelectedFile()); } } else { File project = new File((String) recentProjectsTable.getModel().getValueAt(recentProjectsTable.getSelectedRow(), 0)); if (project.exists()) { Amber.initializeProject(project); } } }//GEN-LAST:event_openProjectButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel jLabel1; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JButton newProjectButton; private javax.swing.JButton openProjectButton; private javax.swing.JTable recentProjectsTable; // End of variables declaration//GEN-END:variables }