From 95523523c08c7a93f7d15f8354ebe0f330a5c108 Mon Sep 17 00:00:00 2001 From: Georgy Litvinov Date: Tue, 28 Jul 2020 16:28:25 +0200 Subject: [PATCH] Added basic panel configuration --- .../w2phtml/gui/ConfigurationWindow.java | 187 ++++++++++++++++-- 1 file changed, 169 insertions(+), 18 deletions(-) diff --git a/src/main/java/pro/litvinovg/w2phtml/gui/ConfigurationWindow.java b/src/main/java/pro/litvinovg/w2phtml/gui/ConfigurationWindow.java index 468c1a1..849f039 100644 --- a/src/main/java/pro/litvinovg/w2phtml/gui/ConfigurationWindow.java +++ b/src/main/java/pro/litvinovg/w2phtml/gui/ConfigurationWindow.java @@ -15,6 +15,28 @@ import javax.swing.JTabbedPane; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JPanel; +import javax.swing.JLabel; +import javax.swing.JCheckBox; +import javax.swing.JTextField; +import javax.swing.GroupLayout; +import javax.swing.GroupLayout.Alignment; +import javax.swing.LayoutStyle.ComponentPlacement; +import javax.swing.JRadioButton; +import javax.swing.JButton; +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; +import javax.swing.JSplitPane; +import java.awt.BorderLayout; +import javax.swing.JDesktopPane; +import javax.swing.BoxLayout; +import com.jgoodies.forms.layout.FormLayout; +import com.jgoodies.forms.layout.ColumnSpec; +import com.jgoodies.forms.layout.RowSpec; +import com.jgoodies.forms.layout.FormSpecs; +import javax.swing.SpringLayout; +import java.awt.FlowLayout; +import java.awt.CardLayout; +import javax.swing.SwingConstants; public class ConfigurationWindow extends JFrame { @@ -30,15 +52,13 @@ public class ConfigurationWindow extends JFrame { */ public static void main(String[] args) { runGUI(null); - /* - * EventQueue.invokeLater(new Runnable() { public void run() { try { - * ConfigurationWindow window = new ConfigurationWindow(); - * window.frame.setVisible(true); } catch (Exception e) { - * e.printStackTrace(); } } }); - */ } private XComponentContext context; + private JTextField tf_MaxWidth; + private JTextField tf_FilterLetterSpacing; + private JTextField textField_1; + private JTextField textField; /** * Create the application. @@ -71,20 +91,153 @@ public class ConfigurationWindow extends JFrame { JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.LEFT); getContentPane().add(tabbedPane); - JPanel panel_1 = new JPanel(); - tabbedPane.addTab("HTML", null, panel_1, null); + JPanel panel_rdf = createRDFPanel(); - JPanel panel = new JPanel(); - tabbedPane.addTab("ePub", null, panel, null); + JPanel panel_epub = createEpubPanel(); - JPanel panel_2 = new JPanel(); - tabbedPane.addTab("RDF", null, panel_2, null); + JPanel panel_html = createHTMLPanel(); + + tabbedPane.addTab("HTML", null, panel_html, null); + tabbedPane.addTab("RDF", null, panel_rdf, null); + tabbedPane.addTab("ePub", null, panel_epub, null); - JMenuBar menuBar = new JMenuBar(); - setJMenuBar(menuBar); - JMenu mnFile = new JMenu("File"); - menuBar.add(mnFile); + } + + private JPanel createEpubPanel() { + JPanel panel_epub = new JPanel(); + GroupLayout gl_panel_epub = new GroupLayout(panel_epub); + gl_panel_epub.setHorizontalGroup( + gl_panel_epub.createParallelGroup(Alignment.LEADING) + .addGap(0, 968, Short.MAX_VALUE) + ); + gl_panel_epub.setVerticalGroup( + gl_panel_epub.createParallelGroup(Alignment.TRAILING) + .addGap(0, 745, Short.MAX_VALUE) + ); + panel_epub.setLayout(gl_panel_epub); + return panel_epub; + } + + private JPanel createRDFPanel() { + JPanel panel_rdf = new JPanel(); + GroupLayout gl_panel_rdf = new GroupLayout(panel_rdf); + gl_panel_rdf.setHorizontalGroup( + gl_panel_rdf.createParallelGroup(Alignment.LEADING) + .addGap(0, 968, Short.MAX_VALUE) + ); + gl_panel_rdf.setVerticalGroup( + gl_panel_rdf.createParallelGroup(Alignment.LEADING) + .addGap(0, 745, Short.MAX_VALUE) + ); + panel_rdf.setLayout(gl_panel_rdf); + return panel_rdf; + } + + private JPanel createHTMLPanel() { + JPanel panel_html = new JPanel(); + + JPanel panel_control = createControlPanel(); + + JPanel panel_configHTML = createConfigHTMLPanel(); + + GroupLayout gl_panel_html = new GroupLayout(panel_html); + gl_panel_html.setHorizontalGroup(gl_panel_html.createParallelGroup(Alignment.TRAILING) + .addGroup(gl_panel_html.createSequentialGroup().addGroup(gl_panel_html.createParallelGroup(Alignment.TRAILING).addComponent(panel_configHTML, GroupLayout.DEFAULT_SIZE, 852, Short.MAX_VALUE).addComponent(panel_control, GroupLayout.DEFAULT_SIZE, 852, Short.MAX_VALUE)).addGap(4))); + gl_panel_html.setVerticalGroup(gl_panel_html.createParallelGroup(Alignment.LEADING).addGroup(Alignment.TRAILING, + gl_panel_html.createSequentialGroup().addComponent(panel_configHTML, GroupLayout.DEFAULT_SIZE, 691, Short.MAX_VALUE).addPreferredGap(ComponentPlacement.RELATED).addComponent(panel_control, GroupLayout.PREFERRED_SIZE, 48, GroupLayout.PREFERRED_SIZE))); + + + panel_html.setLayout(gl_panel_html); + return panel_html; + } + + private JPanel createConfigHTMLPanel() { + JPanel panel_configHTML = new JPanel(); + + JCheckBox cb_IgnoreEmptyParagraphs_2_1_1 = new JCheckBox("Use MathJax"); + + JCheckBox cb_IgnoreEmptyParagraphs_2 = new JCheckBox("Split on whole pages only"); + + JLabel lb_FilterLetterSpacing_1 = new JLabel("Split into multiple files by heading level"); + + textField = new JTextField(); + textField.setColumns(10); + + JCheckBox cb_IgnoreEmptyParagraphs_1 = new JCheckBox("Split document into subsections for Greenstone digital library"); + + JCheckBox cb_IgnoreEmptyParagraphs = new JCheckBox("Filter empty paragraphs"); + + JCheckBox cb_IgnoreHardLineBreaks = new JCheckBox("Filter hard line breaks"); + + JLabel lb_FilterLetterSpacing = new JLabel("Filter letter spacing less than"); + + tf_FilterLetterSpacing = new JTextField(); + tf_FilterLetterSpacing.setColumns(10); + + JCheckBox cb_InlineStyles = new JCheckBox("Inline styles"); + + JCheckBox cb_EmbedVectorImages = new JCheckBox("Embed vector images"); + + JCheckBox cb_EmbedRaster = new JCheckBox("Embed raster images"); + + JLabel lb_MaxWidth_1 = new JLabel("Scale"); + + textField_1 = new JTextField(); + textField_1.setColumns(10); + + JLabel lb_MaxWidth = new JLabel("Max body width"); + + tf_MaxWidth = new JTextField(); + tf_MaxWidth.setColumns(10); + + JCheckBox cb_ConversionToRem = new JCheckBox("Convert dimensions to REM"); + GroupLayout gl_panel_configHTML = new GroupLayout(panel_configHTML); + gl_panel_configHTML.setHorizontalGroup(gl_panel_configHTML.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panel_configHTML.createSequentialGroup().addGap(40) + .addGroup(gl_panel_configHTML.createParallelGroup(Alignment.LEADING).addComponent(cb_IgnoreEmptyParagraphs_2_1_1, GroupLayout.PREFERRED_SIZE, 303, GroupLayout.PREFERRED_SIZE) + .addGroup(gl_panel_configHTML.createSequentialGroup().addComponent(lb_MaxWidth_1, GroupLayout.PREFERRED_SIZE, 111, GroupLayout.PREFERRED_SIZE).addGap(18).addComponent(textField_1, GroupLayout.PREFERRED_SIZE, 175, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panel_configHTML.createSequentialGroup().addComponent(lb_MaxWidth).addGap(18).addComponent(tf_MaxWidth, GroupLayout.PREFERRED_SIZE, 175, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panel_configHTML.createSequentialGroup().addComponent(lb_FilterLetterSpacing, GroupLayout.PREFERRED_SIZE, 253, GroupLayout.PREFERRED_SIZE).addGap(18).addComponent(tf_FilterLetterSpacing, GroupLayout.PREFERRED_SIZE, 175, GroupLayout.PREFERRED_SIZE)) + .addComponent(cb_InlineStyles, GroupLayout.PREFERRED_SIZE, 592, GroupLayout.PREFERRED_SIZE).addComponent(cb_EmbedVectorImages, GroupLayout.PREFERRED_SIZE, 592, GroupLayout.PREFERRED_SIZE).addComponent(cb_EmbedRaster, GroupLayout.PREFERRED_SIZE, 592, GroupLayout.PREFERRED_SIZE) + .addComponent(cb_ConversionToRem, GroupLayout.PREFERRED_SIZE, 592, GroupLayout.PREFERRED_SIZE).addComponent(cb_IgnoreHardLineBreaks, GroupLayout.PREFERRED_SIZE, 303, GroupLayout.PREFERRED_SIZE) + .addComponent(cb_IgnoreEmptyParagraphs, GroupLayout.PREFERRED_SIZE, 303, GroupLayout.PREFERRED_SIZE).addComponent(cb_IgnoreEmptyParagraphs_1, GroupLayout.PREFERRED_SIZE, 482, GroupLayout.PREFERRED_SIZE) + .addGroup(gl_panel_configHTML.createSequentialGroup().addComponent(lb_FilterLetterSpacing_1, GroupLayout.PREFERRED_SIZE, 325, GroupLayout.PREFERRED_SIZE).addGap(12).addComponent(textField, GroupLayout.PREFERRED_SIZE, 175, GroupLayout.PREFERRED_SIZE)) + .addComponent(cb_IgnoreEmptyParagraphs_2, GroupLayout.PREFERRED_SIZE, 303, GroupLayout.PREFERRED_SIZE)) + .addContainerGap(332, Short.MAX_VALUE))); + gl_panel_configHTML.setVerticalGroup(gl_panel_configHTML.createParallelGroup(Alignment.TRAILING).addGroup(Alignment.LEADING, + gl_panel_configHTML.createSequentialGroup().addGap(38) + .addGroup(gl_panel_configHTML.createParallelGroup(Alignment.LEADING).addGroup(gl_panel_configHTML.createSequentialGroup().addGap(2).addComponent(lb_MaxWidth_1)).addComponent(textField_1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)).addGap(6) + .addGroup(gl_panel_configHTML.createParallelGroup(Alignment.LEADING).addGroup(gl_panel_configHTML.createSequentialGroup().addGap(2).addComponent(lb_MaxWidth)).addComponent(tf_MaxWidth, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)).addGap(6) + .addGroup(gl_panel_configHTML.createParallelGroup(Alignment.LEADING).addGroup(gl_panel_configHTML.createSequentialGroup().addGap(2).addComponent(lb_FilterLetterSpacing)).addComponent(tf_FilterLetterSpacing, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)).addGap(2) + .addComponent(cb_InlineStyles).addGap(7).addComponent(cb_EmbedVectorImages).addGap(7).addComponent(cb_EmbedRaster).addGap(7).addComponent(cb_ConversionToRem).addPreferredGap(ComponentPlacement.RELATED).addComponent(cb_IgnoreHardLineBreaks).addGap(7).addComponent(cb_IgnoreEmptyParagraphs) + .addGap(4).addComponent(cb_IgnoreEmptyParagraphs_1).addGap(8) + .addGroup(gl_panel_configHTML.createParallelGroup(Alignment.LEADING).addGroup(gl_panel_configHTML.createSequentialGroup().addGap(2).addComponent(lb_FilterLetterSpacing_1)).addComponent(textField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(ComponentPlacement.RELATED).addComponent(cb_IgnoreEmptyParagraphs_2).addPreferredGap(ComponentPlacement.UNRELATED).addComponent(cb_IgnoreEmptyParagraphs_2_1_1).addContainerGap(310, Short.MAX_VALUE))); + panel_configHTML.setLayout(gl_panel_configHTML); + return panel_configHTML; + } + + private JPanel createControlPanel() { + JPanel panel_control = new JPanel(); + + GroupLayout gl_panel_control = new GroupLayout(panel_control); + JButton btn_Exit = new JButton("Close converter"); + btn_Exit.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + singleFrame.setVisible(false); + singleFrame.dispose(); + } + }); + JButton btn_SaveConfig = new JButton("Save configuration"); + JButton btn_Convert = new JButton("Convert"); + + gl_panel_control.setHorizontalGroup(gl_panel_control.createParallelGroup(Alignment.LEADING).addGroup(Alignment.TRAILING, gl_panel_control.createSequentialGroup().addContainerGap(200, Short.MAX_VALUE).addComponent(btn_Exit, GroupLayout.PREFERRED_SIZE, 165, GroupLayout.PREFERRED_SIZE).addGap(5) + .addComponent(btn_SaveConfig).addGap(5).addComponent(btn_Convert, GroupLayout.PREFERRED_SIZE, 136, GroupLayout.PREFERRED_SIZE).addGap(286))); + gl_panel_control.setVerticalGroup(gl_panel_control.createParallelGroup(Alignment.TRAILING) + .addGroup(gl_panel_control.createSequentialGroup().addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addGroup(gl_panel_control.createParallelGroup(Alignment.LEADING).addComponent(btn_Convert).addComponent(btn_Exit).addComponent(btn_SaveConfig)).addContainerGap())); + panel_control.setLayout(gl_panel_control); + return panel_control; } public static void runGUI(XComponentContext context) { @@ -115,6 +268,4 @@ public class ConfigurationWindow extends JFrame { }); } - - }