-package com.nexuiz.demorecorder.ui.swinggui;\r
-\r
-import java.awt.Frame;\r
-import java.awt.event.ActionEvent;\r
-import java.awt.event.ActionListener;\r
-import java.awt.event.ItemEvent;\r
-import java.awt.event.ItemListener;\r
-import java.io.File;\r
-import java.util.List;\r
-\r
-import javax.swing.JButton;\r
-import javax.swing.JCheckBox;\r
-import javax.swing.JDialog;\r
-import javax.swing.JLabel;\r
-import javax.swing.JOptionPane;\r
-\r
-import net.miginfocom.swing.MigLayout;\r
-\r
-import com.nexuiz.demorecorder.application.DemoRecorderUtils;\r
-import com.nexuiz.demorecorder.application.jobs.RecordJob;\r
-\r
-public class ApplyTemplateDialog extends JDialog implements ActionListener, ItemListener {\r
-\r
- private static final long serialVersionUID = 4807155579295688578L;\r
- private Frame parentFrame;\r
- private RecordJobTemplate template;\r
- private List<RecordJob> jobs;\r
- \r
- private JCheckBox engineCB = new JCheckBox("Engine", true);\r
- private JCheckBox engineParametersCB = new JCheckBox("Engine parameters", true);\r
- private JCheckBox dpVideoDirCB = new JCheckBox("DPVideo directory", true);\r
- private JCheckBox relativeDemoPathCB = new JCheckBox("Relative demo path", true);\r
- private JCheckBox jobNameCB = new JCheckBox("Job name", true);\r
- private JCheckBox demoDirectoryCB = new JCheckBox("Demo directory", true);\r
- private JCheckBox execBeforeCapCB = new JCheckBox("Exec before capture", true);\r
- private JCheckBox execAfterCB = new JCheckBox("Exec after capture", true);\r
- private JCheckBox videoDestination = new JCheckBox("Video destination", true);\r
- private JCheckBox pluginSettingsCB = new JCheckBox("Plug-in settings", true);\r
- private JCheckBox selectAllCB = new JCheckBox("Select/deselect all", true);\r
- \r
- private JButton applyButton = new JButton("Apply");\r
- private JButton cancelButton = new JButton("Cancel");\r
- \r
- public ApplyTemplateDialog(Frame owner, RecordJobTemplate template, List<RecordJob> jobs) {\r
- super(owner, true);\r
- this.parentFrame = owner;\r
- this.template = template;\r
- this.jobs = jobs;\r
- \r
- setDefaultCloseOperation(DISPOSE_ON_CLOSE);\r
- setTitle("Apply template");\r
- this.setupLayout();\r
- }\r
- \r
- public void showDialog() {\r
- this.pack();\r
- this.setLocationRelativeTo(this.parentFrame);\r
- this.setVisible(true);\r
- }\r
-\r
- private void setupLayout() {\r
- setLayout(new MigLayout());\r
- getContentPane().add(new JLabel("Select which properties you want to apply to the selected jobs"), "wrap");\r
- \r
- this.setupCheckBoxes();\r
- \r
- applyButton.addActionListener(this);\r
- cancelButton.addActionListener(this);\r
- getContentPane().add(applyButton);\r
- getContentPane().add(cancelButton);\r
- }\r
- \r
- private void setupCheckBoxes() {\r
- getContentPane().add(engineCB, "wrap");\r
- getContentPane().add(engineParametersCB, "wrap");\r
- getContentPane().add(dpVideoDirCB, "wrap");\r
- getContentPane().add(relativeDemoPathCB, "wrap");\r
- getContentPane().add(jobNameCB, "wrap");\r
- getContentPane().add(demoDirectoryCB, "wrap");\r
- getContentPane().add(execBeforeCapCB, "wrap");\r
- getContentPane().add(execAfterCB, "wrap");\r
- getContentPane().add(videoDestination, "wrap");\r
- getContentPane().add(pluginSettingsCB, "wrap");\r
- getContentPane().add(selectAllCB, "wrap");\r
- \r
- selectAllCB.addItemListener(this);\r
- }\r
-\r
- @Override\r
- public void actionPerformed(ActionEvent e) {\r
- if (e.getSource() == applyButton) {\r
- this.applyTemplates();\r
- dispose();\r
- } else if (e.getSource() == cancelButton) {\r
- dispose();\r
- }\r
- }\r
- \r
- private void applyTemplates() {\r
- String errors = "";\r
- for (RecordJob job : this.jobs) {\r
- try {\r
- this.applyTemplate(job);\r
- } catch (Throwable e) {\r
- errors += "Job <B>" + job.getJobName() + "</B>: " + e.getMessage() + "<BR>";\r
- }\r
- }\r
- \r
- if (!errors.equals("")) {\r
- //error occurred!\r
- String errorMsg = "<HTML><BODY>Error occurred while trying to apply templates:<BR><BR>" + errors + "</BODY></HTML>";\r
- JOptionPane.showMessageDialog(this.parentFrame, errorMsg, "Error(s) while applying template", JOptionPane.INFORMATION_MESSAGE);\r
- }\r
- }\r
- \r
- private void applyTemplate(RecordJob job) {\r
- if (engineCB.isSelected()) {\r
- job.setEnginePath(template.getEnginePath());\r
- }\r
- if (engineParametersCB.isSelected()) {\r
- job.setEngineParameters(template.getEngineParameters());\r
- }\r
- if (dpVideoDirCB.isSelected()) {\r
- job.setDpVideoPath(template.getDpVideoPath());\r
- }\r
- if (relativeDemoPathCB.isSelected()) {\r
- job.setRelativeDemoPath(template.getRelativeDemoPath());\r
- }\r
- if (jobNameCB.isSelected()) {\r
- job.setJobName(template.getJobName());\r
- }\r
- if (demoDirectoryCB.isSelected()) {\r
- File demoDir = template.getDemoFile();\r
- String demoFileName = DemoRecorderUtils.getJustFileNameOfPath(job.getDemoFile());\r
- String newDemoPath = demoDir.getAbsolutePath() + File.separator + demoFileName;\r
- job.setDemoFile(new File(newDemoPath));\r
- }\r
- if (execBeforeCapCB.isEnabled()) {\r
- job.setExecuteBeforeCap(template.getExecuteBeforeCap());\r
- }\r
- if (execAfterCB.isSelected()) {\r
- job.setExecuteAfterCap(template.getExecuteAfterCap());\r
- }\r
- if (videoDestination.isSelected()) {\r
- File videoDestinatinDir = template.getVideoDestination();\r
- String videoFileName = DemoRecorderUtils.getJustFileNameOfPath(job.getVideoDestination());\r
- String newVideoPath = videoDestinatinDir.getAbsolutePath() + File.separator + videoFileName;\r
- job.setVideoDestination(new File(newVideoPath));\r
- }\r
- if (pluginSettingsCB.isSelected()) {\r
- job.setEncoderPluginSettings(template.getEncoderPluginSettings());\r
- }\r
- }\r
-\r
- @Override\r
- public void itemStateChanged(ItemEvent e) {\r
- if (e.getSource() == selectAllCB) {\r
- boolean selected = false;\r
- if (e.getStateChange() == ItemEvent.SELECTED) {\r
- selected = true;\r
- }\r
- \r
- engineCB.setSelected(selected);\r
- engineParametersCB.setSelected(selected);\r
- dpVideoDirCB.setSelected(selected);\r
- relativeDemoPathCB.setSelected(selected);\r
- jobNameCB.setSelected(selected);\r
- demoDirectoryCB.setSelected(selected);\r
- execBeforeCapCB.setSelected(selected);\r
- execAfterCB.setSelected(selected);\r
- videoDestination.setSelected(selected);\r
- pluginSettingsCB.setSelected(selected);\r
- }\r
- }\r
-}\r
+package com.nexuiz.demorecorder.ui.swinggui;
+
+import java.awt.Frame;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.io.File;
+import java.util.List;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+
+import net.miginfocom.swing.MigLayout;
+
+import com.nexuiz.demorecorder.application.DemoRecorderUtils;
+import com.nexuiz.demorecorder.application.jobs.RecordJob;
+
+public class ApplyTemplateDialog extends JDialog implements ActionListener, ItemListener {
+
+ private static final long serialVersionUID = 4807155579295688578L;
+ private Frame parentFrame;
+ private RecordJobTemplate template;
+ private List<RecordJob> jobs;
+
+ private JCheckBox engineCB = new JCheckBox("Engine", true);
+ private JCheckBox engineParametersCB = new JCheckBox("Engine parameters", true);
+ private JCheckBox dpVideoDirCB = new JCheckBox("DPVideo directory", true);
+ private JCheckBox relativeDemoPathCB = new JCheckBox("Relative demo path", true);
+ private JCheckBox jobNameCB = new JCheckBox("Job name", true);
+ private JCheckBox demoDirectoryCB = new JCheckBox("Demo directory", true);
+ private JCheckBox execBeforeCapCB = new JCheckBox("Exec before capture", true);
+ private JCheckBox execAfterCB = new JCheckBox("Exec after capture", true);
+ private JCheckBox videoDestination = new JCheckBox("Video destination", true);
+ private JCheckBox pluginSettingsCB = new JCheckBox("Plug-in settings", true);
+ private JCheckBox selectAllCB = new JCheckBox("Select/deselect all", true);
+
+ private JButton applyButton = new JButton("Apply");
+ private JButton cancelButton = new JButton("Cancel");
+
+ public ApplyTemplateDialog(Frame owner, RecordJobTemplate template, List<RecordJob> jobs) {
+ super(owner, true);
+ this.parentFrame = owner;
+ this.template = template;
+ this.jobs = jobs;
+
+ setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+ setTitle("Apply template");
+ this.setupLayout();
+ }
+
+ public void showDialog() {
+ this.pack();
+ this.setLocationRelativeTo(this.parentFrame);
+ this.setVisible(true);
+ }
+
+ private void setupLayout() {
+ setLayout(new MigLayout());
+ getContentPane().add(new JLabel("Select which properties you want to apply to the selected jobs"), "wrap");
+
+ this.setupCheckBoxes();
+
+ applyButton.addActionListener(this);
+ cancelButton.addActionListener(this);
+ getContentPane().add(applyButton);
+ getContentPane().add(cancelButton);
+ }
+
+ private void setupCheckBoxes() {
+ getContentPane().add(engineCB, "wrap");
+ getContentPane().add(engineParametersCB, "wrap");
+ getContentPane().add(dpVideoDirCB, "wrap");
+ getContentPane().add(relativeDemoPathCB, "wrap");
+ getContentPane().add(jobNameCB, "wrap");
+ getContentPane().add(demoDirectoryCB, "wrap");
+ getContentPane().add(execBeforeCapCB, "wrap");
+ getContentPane().add(execAfterCB, "wrap");
+ getContentPane().add(videoDestination, "wrap");
+ getContentPane().add(pluginSettingsCB, "wrap");
+ getContentPane().add(selectAllCB, "wrap");
+
+ selectAllCB.addItemListener(this);
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (e.getSource() == applyButton) {
+ this.applyTemplates();
+ dispose();
+ } else if (e.getSource() == cancelButton) {
+ dispose();
+ }
+ }
+
+ private void applyTemplates() {
+ String errors = "";
+ for (RecordJob job : this.jobs) {
+ try {
+ this.applyTemplate(job);
+ } catch (Throwable e) {
+ errors += "Job <B>" + job.getJobName() + "</B>: " + e.getMessage() + "<BR>";
+ }
+ }
+
+ if (!errors.equals("")) {
+ //error occurred!
+ String errorMsg = "<HTML><BODY>Error occurred while trying to apply templates:<BR><BR>" + errors + "</BODY></HTML>";
+ JOptionPane.showMessageDialog(this.parentFrame, errorMsg, "Error(s) while applying template", JOptionPane.INFORMATION_MESSAGE);
+ }
+ }
+
+ private void applyTemplate(RecordJob job) {
+ if (engineCB.isSelected()) {
+ job.setEnginePath(template.getEnginePath());
+ }
+ if (engineParametersCB.isSelected()) {
+ job.setEngineParameters(template.getEngineParameters());
+ }
+ if (dpVideoDirCB.isSelected()) {
+ job.setDpVideoPath(template.getDpVideoPath());
+ }
+ if (relativeDemoPathCB.isSelected()) {
+ job.setRelativeDemoPath(template.getRelativeDemoPath());
+ }
+ if (jobNameCB.isSelected()) {
+ job.setJobName(template.getJobName());
+ }
+ if (demoDirectoryCB.isSelected()) {
+ File demoDir = template.getDemoFile();
+ String demoFileName = DemoRecorderUtils.getJustFileNameOfPath(job.getDemoFile());
+ String newDemoPath = demoDir.getAbsolutePath() + File.separator + demoFileName;
+ job.setDemoFile(new File(newDemoPath));
+ }
+ if (execBeforeCapCB.isEnabled()) {
+ job.setExecuteBeforeCap(template.getExecuteBeforeCap());
+ }
+ if (execAfterCB.isSelected()) {
+ job.setExecuteAfterCap(template.getExecuteAfterCap());
+ }
+ if (videoDestination.isSelected()) {
+ File videoDestinatinDir = template.getVideoDestination();
+ String videoFileName = DemoRecorderUtils.getJustFileNameOfPath(job.getVideoDestination());
+ String newVideoPath = videoDestinatinDir.getAbsolutePath() + File.separator + videoFileName;
+ job.setVideoDestination(new File(newVideoPath));
+ }
+ if (pluginSettingsCB.isSelected()) {
+ job.setEncoderPluginSettings(template.getEncoderPluginSettings());
+ }
+ }
+
+ @Override
+ public void itemStateChanged(ItemEvent e) {
+ if (e.getSource() == selectAllCB) {
+ boolean selected = false;
+ if (e.getStateChange() == ItemEvent.SELECTED) {
+ selected = true;
+ }
+
+ engineCB.setSelected(selected);
+ engineParametersCB.setSelected(selected);
+ dpVideoDirCB.setSelected(selected);
+ relativeDemoPathCB.setSelected(selected);
+ jobNameCB.setSelected(selected);
+ demoDirectoryCB.setSelected(selected);
+ execBeforeCapCB.setSelected(selected);
+ execAfterCB.setSelected(selected);
+ videoDestination.setSelected(selected);
+ pluginSettingsCB.setSelected(selected);
+ }
+ }
+}