package org.rr.jeborker.gui.action; import java.awt.event.ActionEvent; import java.util.List; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.DefaultComboBoxModel; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.SwingWorker; import org.rr.commons.mufs.IResourceHandler; import org.rr.commons.mufs.ResourceHandlerFactory; import org.rr.commons.swing.SwingUtils; import org.rr.commons.swing.components.JRComboBox; import org.rr.commons.swing.dialogs.JPreferenceDialog; import org.rr.commons.swing.dialogs.JPreferenceDialog.PreferenceEntry; import org.rr.jeborker.db.item.EbookPropertyItem; import org.rr.jeborker.gui.MainController; import org.rr.jeborker.gui.resources.ImageResourceBundle; import bd.amazed.docscissors.model.PageGroup; import bd.amazed.docscissors.view.DocScissorsMainFrame; class ShowPdfScissorsAction extends AbstractAction { private static final long serialVersionUID = -6464113132395695332L; ShowPdfScissorsAction(String text) { String name = Bundle.getString("ShowPdfScissorsAction.name"); if(text == null) { putValue(Action.NAME, SwingUtils.removeMnemonicMarker(name)); } else { putValue(Action.NAME, text); } putValue(ApplicationAction.NON_THREADED_ACTION_KEY, Boolean.TRUE); //No threading putValue(Action.SMALL_ICON, ImageResourceBundle.getResourceAsImageIcon("scissor_16.png")); putValue(Action.LARGE_ICON_KEY, ImageResourceBundle.getResourceAsImageIcon("scissor_22.png")); putValue(MNEMONIC_KEY, SwingUtils.getMnemonicKeyCode(name)); } @Override public void actionPerformed(ActionEvent e) { final MainController controller = MainController.getController(); final List<EbookPropertyItem> selectedEbookPropertyItems = controller.getSelectedEbookPropertyItems(); if(!selectedEbookPropertyItems.isEmpty()) { DocScissorsMainFrame scissors = new DocScissorsMainFrame(); scissors.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); scissors.setExtendedState(JFrame.NORMAL); EbookPropertyItem ebookPropertyItem = selectedEbookPropertyItems.get(0); IResourceHandler resourceHandler = ebookPropertyItem.getResourceHandler(); IResourceHandler uniqueResourceHandler = ResourceHandlerFactory.getUniqueResourceHandler(resourceHandler, "scissored", null); scissors.setSaveFile(uniqueResourceHandler.toFile()); openOptionDialog(controller, scissors, resourceHandler); } } private void openOptionDialog(final MainController controller, final DocScissorsMainFrame scissors, final IResourceHandler resourceHandler) { JPreferenceDialog preference = new JPreferenceDialog(controller.getMainWindow()); JRComboBox<String> pageGroupTypeCombobox = new JRComboBox<>(); pageGroupTypeCombobox.setModel(new DefaultComboBoxModel<String>(new String[] { Bundle.getString("ShowPdfScissorsAction.pageGroupType.all"), Bundle.getString("ShowPdfScissorsAction.pageGroupType.oddAndEven"), Bundle.getString("ShowPdfScissorsAction.pageGroupType.separate"), })); pageGroupTypeCombobox.setWide(true); preference.addPreferenceEntry(new PreferenceEntry("0", Bundle.getString("ShowPdfScissorsAction.cropType.label"), pageGroupTypeCombobox)); final JCheckBox shouldCreateStackViewCheckBox = new JCheckBox(); shouldCreateStackViewCheckBox.setSelected(true); preference.addPreferenceEntry(new PreferenceEntry("1", Bundle.getString("ShowPdfScissorsAction.stackedView"), shouldCreateStackViewCheckBox)); SwingUtils.centerOnWindow(controller.getMainWindow(), preference); preference.setVisible(true); if(preference.getActionResult() == JPreferenceDialog.ACTION_RESULT_OK) { final int pageGroupType; String selectedItem = (String) pageGroupTypeCombobox.getSelectedItem(); if(selectedItem.equals(Bundle.getString("ShowPdfScissorsAction.pageGroupType.all"))) { pageGroupType = PageGroup.GROUP_TYPE_ALL; } else if(selectedItem.equals(Bundle.getString("ShowPdfScissorsAction.pageGroupType.oddAndEven"))) { pageGroupType = PageGroup.GROUP_TYPE_ODD_EVEN; } else if(selectedItem.equals(Bundle.getString("ShowPdfScissorsAction.pageGroupType.separate"))) { pageGroupType = PageGroup.GROUP_TYPE_INDIVIDUAL; } else { pageGroupType = PageGroup.GROUP_TYPE_ALL; } new SwingWorker<Void,Void>() { @Override protected Void doInBackground() throws Exception { scissors.openFile(resourceHandler, pageGroupType, shouldCreateStackViewCheckBox.isSelected()); return null; } @Override protected void done() { scissors.setVisible(true); } }.execute(); } } }