/** * */ package de.danielsenff.badds.view; import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.image.BufferedImage; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JPanel; import javax.swing.JSeparator; import javax.swing.JTabbedPane; import de.danielsenff.badds.actions.ActionAddFile; import de.danielsenff.badds.actions.ActionCancelSaveAll; import de.danielsenff.badds.actions.ActionClearFilelist; import de.danielsenff.badds.actions.ActionExitApplication; import de.danielsenff.badds.actions.ActionImportFolder; import de.danielsenff.badds.actions.ActionPreview; import de.danielsenff.badds.actions.ActionRemoveFile; import de.danielsenff.badds.actions.ActionSaveAll; import de.danielsenff.badds.actions.ActionSelectAll; import de.danielsenff.badds.controller.Application; import de.danielsenff.badds.util.OS; import de.danielsenff.badds.util.ResourceLoader; import de.danielsenff.badds.util.FileDrop.FileDrop; import de.danielsenff.badds.view.GUI.FilesTable; import de.danielsenff.badds.view.GUI.InfoPanel; import de.danielsenff.badds.view.GUI.JCFrame; import de.danielsenff.badds.view.GUI.JToolbar; import de.danielsenff.badds.view.GUI.SettingsPanel; import de.danielsenff.badds.view.GridBagConstraints.GBConstraints; import de.danielsenff.badds.view.worker.WorkingView; /** * @author danielsenff * */ public class View extends JCFrame { /** * */ private static final long serialVersionUID = 1L; final String title = bundle.getString("application_title"); private final WorkingView workingView; private SettingsPanel scalePanel; private FilesTable openFilesTable; private JTabbedPane tabOperations; private ActionPreview actionPreview; private ActionSaveAll actionSaveAll; private ActionRemoveFile actionRemoveFile; private ActionImportFolder actionImportFolder; private ActionAddFile actionAddFile; private ActionClearFilelist actionClearFilelist; private ActionSelectAll actionSelectAll; private ActionCancelSaveAll actionCancelSaveAll; /** * */ public View(final Application controller) { super(controller); this.workingView = new WorkingView(this); initFrame(); getContentPane().setLayout(new BorderLayout()); initActions(); initMenu(); JPanel panel = new JPanel(new GridBagLayout()); // panel.add(new JLabel(ResourceLoader.getResourceIcon("/Resource/ajax-loader.gif")), new RemainderConstraintsNoFill()); openFilesTable = new FilesTable(controller); panel.add(openFilesTable, new GBConstraints(4,1,GridBagConstraints.BOTH,GridBagConstraints.CENTER, 0.5, 1)); tabOperations = new JTabbedPane(); this.scalePanel = new SettingsPanel(controller); tabOperations.add(bundle.getString("Settings"), scalePanel); tabOperations.add(bundle.getString("Info"), new InfoPanel(controller)); panel.add(tabOperations, new GBConstraints(GridBagConstraints.REMAINDER,1,GridBagConstraints.HORIZONTAL,GridBagConstraints.PAGE_START, 0.0, 0.7)); Icon icon = new ImageIcon("ajax-loader.gif"); JLabel labelAnimation = new JLabel(icon); // panel.add(labelAnimation, new RemainderConstraintsNoFill()); getContentPane().add(panel, BorderLayout.CENTER); new FileDrop( System.out, this.getOpenFilesTable(), /*dragBorder,*/ new FileDrop.Listener() { @Override public void filesDropped( java.io.File[] files ) { for( int i = 0; i < files.length; i++ ) { controller.addFile(files[i]); } // end for: through each dropped file } // end filesDropped }); // end FileDrop.Listener setVisible(true); pack(); } /** * */ private void initActions() { actionAddFile = new ActionAddFile(controller); actionImportFolder = new ActionImportFolder(controller); actionPreview = new ActionPreview(controller); actionPreview.setEnabled(false); actionSaveAll = new ActionSaveAll(controller); actionSaveAll.setEnabled(false); actionCancelSaveAll = new ActionCancelSaveAll(controller); actionCancelSaveAll.setEnabled(false); actionRemoveFile = new ActionRemoveFile(controller); actionRemoveFile.setEnabled(false); actionClearFilelist = new ActionClearFilelist(controller); actionClearFilelist.setEnabled(false); // actionSelectAll = new ActionSelectAll(controller); // actionSelectAll.setEnabled(false); } /** * */ private void initMenu() { JMenuBar menuBar = new JMenuBar(); JMenu menuFile; if (OS.isMacOS()) { menuFile = new JMenu(bundle.getString("File_menu_osx")); } else { menuFile = new JMenu(bundle.getString("File_menu")); } menuFile.add(actionAddFile).setIcon(null); menuFile.add(actionImportFolder).setIcon(null); menuFile.addSeparator(); menuFile.add(actionSaveAll).setIcon(null); if(!OS.isMacOS()) { menuFile.add(new JSeparator()); menuFile.add(new ActionExitApplication(controller)).setIcon(null); } JMenu menuEdit = new JMenu(bundle.getString("Edit_menu")); menuEdit.add(actionRemoveFile).setIcon(null); menuEdit.add(actionClearFilelist).setIcon(null); // menuEdit.add(actionSelectAll); JMenu menuView; if (OS.isMacOS()) { menuView = new JMenu(bundle.getString("View_menu_osx")); } else { menuView = new JMenu(bundle.getString("View_menu")); } menuView.add(actionPreview).setIcon(null); menuBar.add(menuFile); menuBar.add(menuEdit); menuBar.add(menuView); menuBar.setVisible(true); setJMenuBar(menuBar); JToolbar bar = new JToolbar(); bar.setMargin(new Insets(6,6,6,6)); bar.setFloatable(false); bar.setBorderPainted(false); bar.add(actionAddFile); bar.add(actionImportFolder); bar.addSeparator(); bar.add(actionRemoveFile); bar.add(actionClearFilelist); bar.addSeparator(); bar.add(actionPreview); bar.addSeparator(); bar.add(actionSaveAll); add(bar, BorderLayout.NORTH); } private void initFrame() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationByPlatform(true); setSize(400, 400); setResizable(true); setTitle(title); setName(title); BufferedImage applicationIcon; try { applicationIcon = ImageIO.read(ResourceLoader.getResource(bundle.getString("application_icon"))); setIconImage(applicationIcon); } catch (IOException e) { e.printStackTrace(); } } /** * */ public void setNewHeight(final int newHeight) { this.scalePanel.setNewHeight(newHeight); } public void setNewWidth(final int newWidth) { this.scalePanel.setNewWidth(newWidth); } public FilesTable getOpenFilesTable() { return this.openFilesTable; } public ActionPreview getActionPreview() { return this.actionPreview; } public ActionSaveAll getActionSaveAll() { return this.actionSaveAll; } public ActionRemoveFile getActionRemoveFile() { return this.actionRemoveFile; } public ActionImportFolder getActionImportFolder() { return this.actionImportFolder; } public ActionAddFile getActionAddFile() { return this.actionAddFile; } public ActionClearFilelist getActionClearFilelist() { return this.actionClearFilelist; } public JTabbedPane getTabOperations() { return this.tabOperations; } public ActionCancelSaveAll getActionCancelSaveAll() { return this.actionCancelSaveAll; } public WorkingView getWorkingView() { return this.workingView; } public ActionSelectAll getActionSelectAll() { return this.actionSelectAll; } }