/* * The MIT License * * Copyright 2013 Andreas Giemza. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package de.andreasgiemza.jgeagle; import de.andreasgiemza.jgeagle.repo.data.EagleFile; import de.andreasgiemza.jgeagle.gui.EagleFilesTree; import de.andreasgiemza.jgeagle.gui.CommitsTables; import de.andreasgiemza.jgeagle.gui.SheetLayerDiffImage; import de.andreasgiemza.jgeagle.options.Options; import de.andreasgiemza.jgeagle.panels.AboutPanel; import de.andreasgiemza.jgeagle.panels.CreateImagesPanel; import de.andreasgiemza.jgeagle.panels.DeleteImagesPanel; import de.andreasgiemza.jgeagle.panels.PreferencesPanel; import de.andreasgiemza.jgeagle.repo.Repo; import java.awt.Toolkit; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.revwalk.RevCommit; /** * * @author Andreas Giemza */ public class JGeagle extends javax.swing.JFrame { private final Options options; private final EagleFilesTree eagleFilesTree; private final CommitsTables commitsTables; private final SheetLayerDiffImage sheetLayerDiffImage; private Repo repo; /** * Creates new form JGeagle */ public JGeagle() { initComponents(); setLocation(new Double((Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2) - (this.getWidth() / 2)).intValue(), new Double((Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2) - (this.getHeight() / 2)).intValue()); options = new Options(); eagleFilesTree = new EagleFilesTree(this, eagleFilesJTree); commitsTables = new CommitsTables(this, oldCommitsTable, newCommitsTable); sheetLayerDiffImage = new SheetLayerDiffImage( options, sheetComboBox, layerComboBox, diffImageButton); if (!"".equals(options.getPropEagleBinary()) && !"".equals(options.getPropPresetRepo())) { openRepo(Paths.get(options.getPropPresetRepo())); } } public void eagleFileSelected(EagleFile eagleFile) { if (eagleFile == null) { commitsTables.reset(); return; } repo.getEagleFileLogAndStatus(options, eagleFile); commitsTables.updateOldCommitsTable(eagleFile); commitsTables.resetNewCommitsTable(); sheetLayerDiffImage.reset(); } public void oldCommitSelected(EagleFile eagleFile, RevCommit oldCommit) { commitsTables.updateNewCommitsTable(eagleFile, oldCommit); sheetLayerDiffImage.reset(); } public void newCommitSelected( EagleFile eagleFile, RevCommit oldCommit, RevCommit newCommit) { options.cleanTempDir(); if (eagleFile.getFileExtension().equals(EagleFile.BRD)) { sheetLayerDiffImage.brdSelected(options, repo, eagleFile, oldCommit, newCommit); } else { sheetLayerDiffImage.schSelected(repo, eagleFile, oldCommit, newCommit); } } private void openRepo(Path directory) { eagleFilesTree.reset(); commitsTables.reset(); try { repo = new Repo(options, directory); } catch (IOException | GitAPIException ex) { JOptionPane.showMessageDialog(this, "Please select a valid git repository!", "Not a valid git repository!", JOptionPane.ERROR_MESSAGE); return; } eagleFilesTree.buildAndDisplayTree(repo); createImagesMenuItem.setEnabled(true); deleteImagesMenuItem.setEnabled(true); } /** * 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() { repositoryFileChooser = new javax.swing.JFileChooser(); eagleFilesPanel = new javax.swing.JPanel(); eagleFilesScrollPane = new javax.swing.JScrollPane(); eagleFilesJTree = new javax.swing.JTree(); eagleFilesExpandAllButton = new javax.swing.JButton(); eagleFilesCollapseAllButton = new javax.swing.JButton(); commitsPanel = new javax.swing.JPanel(); oldCommitsPanel = new javax.swing.JPanel(); oldCommitsScrollPane = new javax.swing.JScrollPane(); oldCommitsTable = new javax.swing.JTable(); newCommitsPanel = new javax.swing.JPanel(); newCommitsScrollPane = new javax.swing.JScrollPane(); newCommitsTable = new javax.swing.JTable(); variousPanel = new javax.swing.JPanel(); sheetPanel = new javax.swing.JPanel(); sheetComboBox = new javax.swing.JComboBox(); layerPanel = new javax.swing.JPanel(); layerComboBox = new javax.swing.JComboBox(); diffImagePanel = new javax.swing.JPanel(); diffImageButton = new javax.swing.JButton(); menuBar = new javax.swing.JMenuBar(); repositoryMenu = new javax.swing.JMenu(); repositoryMenuItem = new javax.swing.JMenuItem(); toolsMenu = new javax.swing.JMenu(); createImagesMenuItem = new javax.swing.JMenuItem(); deleteImagesMenuItem = new javax.swing.JMenuItem(); optionsMenu = new javax.swing.JMenu(); preferencesMenuItem = new javax.swing.JMenuItem(); helpMenu = new javax.swing.JMenu(); aboutMenuItem = new javax.swing.JMenuItem(); repositoryFileChooser.setFileSelectionMode(javax.swing.JFileChooser.DIRECTORIES_ONLY); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("JGeagle v1.0.0"); setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource("de/andreasgiemza/jgeagle/gui/icons/jgeagle.png"))); eagleFilesPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Files")); eagleFilesJTree.setModel(null); eagleFilesScrollPane.setViewportView(eagleFilesJTree); eagleFilesExpandAllButton.setText("Expand all"); eagleFilesExpandAllButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { eagleFilesExpandAllButtonActionPerformed(evt); } }); eagleFilesCollapseAllButton.setText("Collapse all"); eagleFilesCollapseAllButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { eagleFilesCollapseAllButtonActionPerformed(evt); } }); javax.swing.GroupLayout eagleFilesPanelLayout = new javax.swing.GroupLayout(eagleFilesPanel); eagleFilesPanel.setLayout(eagleFilesPanelLayout); eagleFilesPanelLayout.setHorizontalGroup( eagleFilesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(eagleFilesPanelLayout.createSequentialGroup() .addComponent(eagleFilesScrollPane) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(eagleFilesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(eagleFilesExpandAllButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(eagleFilesCollapseAllButton, javax.swing.GroupLayout.DEFAULT_SIZE, 120, Short.MAX_VALUE))) ); eagleFilesPanelLayout.setVerticalGroup( eagleFilesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(eagleFilesPanelLayout.createSequentialGroup() .addComponent(eagleFilesExpandAllButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(eagleFilesCollapseAllButton)) .addComponent(eagleFilesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 138, javax.swing.GroupLayout.PREFERRED_SIZE) ); commitsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Commits")); commitsPanel.setLayout(new java.awt.GridLayout(1, 0, 5, 0)); oldCommitsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Old")); oldCommitsPanel.setLayout(new javax.swing.BoxLayout(oldCommitsPanel, javax.swing.BoxLayout.LINE_AXIS)); oldCommitsTable.setAutoCreateRowSorter(true); oldCommitsScrollPane.setViewportView(oldCommitsTable); oldCommitsPanel.add(oldCommitsScrollPane); commitsPanel.add(oldCommitsPanel); newCommitsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("New")); newCommitsPanel.setLayout(new javax.swing.BoxLayout(newCommitsPanel, javax.swing.BoxLayout.LINE_AXIS)); newCommitsTable.setAutoCreateRowSorter(true); newCommitsScrollPane.setViewportView(newCommitsTable); newCommitsPanel.add(newCommitsScrollPane); commitsPanel.add(newCommitsPanel); variousPanel.setLayout(new java.awt.GridLayout(1, 0)); sheetPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Sheet")); sheetPanel.setLayout(new java.awt.GridLayout(1, 0, 5, 0)); sheetComboBox.setEnabled(false); sheetPanel.add(sheetComboBox); variousPanel.add(sheetPanel); layerPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Layer")); layerPanel.setLayout(new java.awt.GridLayout(1, 0, 5, 0)); layerComboBox.setEnabled(false); layerPanel.add(layerComboBox); variousPanel.add(layerPanel); diffImagePanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Diff image")); diffImageButton.setText("Make and/or show"); diffImageButton.setEnabled(false); diffImageButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { diffImageButtonActionPerformed(evt); } }); javax.swing.GroupLayout diffImagePanelLayout = new javax.swing.GroupLayout(diffImagePanel); diffImagePanel.setLayout(diffImagePanelLayout); diffImagePanelLayout.setHorizontalGroup( diffImagePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(diffImageButton, javax.swing.GroupLayout.DEFAULT_SIZE, 251, Short.MAX_VALUE) ); diffImagePanelLayout.setVerticalGroup( diffImagePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(diffImageButton) ); variousPanel.add(diffImagePanel); repositoryMenu.setText("Repository"); repositoryMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK)); repositoryMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/de/andreasgiemza/jgeagle/gui/icons/open.png"))); // NOI18N repositoryMenuItem.setText("Open"); repositoryMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { repositoryMenuItemActionPerformed(evt); } }); repositoryMenu.add(repositoryMenuItem); menuBar.add(repositoryMenu); toolsMenu.setText("Tools"); createImagesMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_I, java.awt.event.InputEvent.CTRL_MASK)); createImagesMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/de/andreasgiemza/jgeagle/gui/icons/createimages.png"))); // NOI18N createImagesMenuItem.setText("Create images"); createImagesMenuItem.setEnabled(false); createImagesMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { createImagesMenuItemActionPerformed(evt); } }); toolsMenu.add(createImagesMenuItem); deleteImagesMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_D, java.awt.event.InputEvent.CTRL_MASK)); deleteImagesMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/de/andreasgiemza/jgeagle/gui/icons/deleteimages.png"))); // NOI18N deleteImagesMenuItem.setText("Delete images"); deleteImagesMenuItem.setEnabled(false); deleteImagesMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { deleteImagesMenuItemActionPerformed(evt); } }); toolsMenu.add(deleteImagesMenuItem); menuBar.add(toolsMenu); optionsMenu.setText("Options"); preferencesMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.CTRL_MASK)); preferencesMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/de/andreasgiemza/jgeagle/gui/icons/preferences.png"))); // NOI18N preferencesMenuItem.setText("Preferences"); preferencesMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { preferencesMenuItemActionPerformed(evt); } }); optionsMenu.add(preferencesMenuItem); menuBar.add(optionsMenu); helpMenu.setText("Help"); aboutMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_H, java.awt.event.InputEvent.CTRL_MASK)); aboutMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/de/andreasgiemza/jgeagle/gui/icons/about.png"))); // NOI18N aboutMenuItem.setText("About"); aboutMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { aboutMenuItemActionPerformed(evt); } }); helpMenu.add(aboutMenuItem); menuBar.add(helpMenu); setJMenuBar(menuBar); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(eagleFilesPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(commitsPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addComponent(variousPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(eagleFilesPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(commitsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 338, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(variousPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents private void eagleFilesExpandAllButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_eagleFilesExpandAllButtonActionPerformed eagleFilesTree.expandAll(); }//GEN-LAST:event_eagleFilesExpandAllButtonActionPerformed private void eagleFilesCollapseAllButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_eagleFilesCollapseAllButtonActionPerformed eagleFilesTree.collapseAll(); }//GEN-LAST:event_eagleFilesCollapseAllButtonActionPerformed private void diffImageButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_diffImageButtonActionPerformed try { sheetLayerDiffImage.createDiffImage( repo, commitsTables.getEagleFile(), commitsTables.getOldCommit(), commitsTables.getNewCommit()); } catch (IOException | InterruptedException ex) { Logger.getLogger(JGeagle.class.getName()).log(Level.SEVERE, null, ex); } }//GEN-LAST:event_diffImageButtonActionPerformed private void repositoryMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_repositoryMenuItemActionPerformed if ("".equals(options.getPropEagleBinary())) { JOptionPane.showMessageDialog(this, "Please select the eagle binary in the Preferences!", "Eagle binary not selected!", JOptionPane.ERROR_MESSAGE); preferencesMenuItemActionPerformed(null); return; } int returnVal = repositoryFileChooser.showOpenDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { openRepo(repositoryFileChooser.getSelectedFile().toPath()); } }//GEN-LAST:event_repositoryMenuItemActionPerformed private void preferencesMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_preferencesMenuItemActionPerformed JDialog dialog = new JDialog(this, "Preferences", true); dialog.getContentPane().add(new PreferencesPanel(dialog, options)); dialog.pack(); dialog.setLocation( new Double((Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2) - (dialog.getWidth() / 2)).intValue(), new Double((Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2) - (dialog.getHeight() / 2)).intValue()); dialog.setResizable(false); dialog.setVisible(true); }//GEN-LAST:event_preferencesMenuItemActionPerformed private void aboutMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_aboutMenuItemActionPerformed JDialog dialog = new JDialog(this, "About", true); dialog.getContentPane().add(new AboutPanel()); dialog.pack(); dialog.setLocation( new Double((Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2) - (dialog.getWidth() / 2)).intValue(), new Double((Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2) - (dialog.getHeight() / 2)).intValue()); dialog.setResizable(false); dialog.setVisible(true); }//GEN-LAST:event_aboutMenuItemActionPerformed private void createImagesMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createImagesMenuItemActionPerformed JDialog dialog = new JDialog(this, "Create images", true); dialog.getContentPane().add(new CreateImagesPanel(options, repo)); dialog.pack(); dialog.setLocation( new Double((Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2) - (dialog.getWidth() / 2)).intValue(), new Double((Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2) - (dialog.getHeight() / 2)).intValue()); dialog.setResizable(false); dialog.setVisible(true); }//GEN-LAST:event_createImagesMenuItemActionPerformed private void deleteImagesMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteImagesMenuItemActionPerformed JDialog dialog = new JDialog(this, "Delete images", true); dialog.getContentPane().add(new DeleteImagesPanel(options, repo)); dialog.pack(); dialog.setLocation( new Double((Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2) - (dialog.getWidth() / 2)).intValue(), new Double((Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2) - (dialog.getHeight() / 2)).intValue()); dialog.setResizable(false); dialog.setVisible(true); }//GEN-LAST:event_deleteImagesMenuItemActionPerformed /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Windows look and feel */ //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* If Windows is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Windows".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(JGeagle.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() { new JGeagle().setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JMenuItem aboutMenuItem; private javax.swing.JPanel commitsPanel; private javax.swing.JMenuItem createImagesMenuItem; private javax.swing.JMenuItem deleteImagesMenuItem; private javax.swing.JButton diffImageButton; private javax.swing.JPanel diffImagePanel; private javax.swing.JButton eagleFilesCollapseAllButton; private javax.swing.JButton eagleFilesExpandAllButton; private javax.swing.JTree eagleFilesJTree; private javax.swing.JPanel eagleFilesPanel; private javax.swing.JScrollPane eagleFilesScrollPane; private javax.swing.JMenu helpMenu; private javax.swing.JComboBox layerComboBox; private javax.swing.JPanel layerPanel; private javax.swing.JMenuBar menuBar; private javax.swing.JPanel newCommitsPanel; private javax.swing.JScrollPane newCommitsScrollPane; private javax.swing.JTable newCommitsTable; private javax.swing.JPanel oldCommitsPanel; private javax.swing.JScrollPane oldCommitsScrollPane; private javax.swing.JTable oldCommitsTable; private javax.swing.JMenu optionsMenu; private javax.swing.JMenuItem preferencesMenuItem; private javax.swing.JFileChooser repositoryFileChooser; private javax.swing.JMenu repositoryMenu; private javax.swing.JMenuItem repositoryMenuItem; private javax.swing.JComboBox sheetComboBox; private javax.swing.JPanel sheetPanel; private javax.swing.JMenu toolsMenu; private javax.swing.JPanel variousPanel; // End of variables declaration//GEN-END:variables }