blob: 4349bd8a6627ccb81b5b04026f39f2349cc8b8a6 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.netbeans.modules.javafx2.project.ui;
import java.awt.Dialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.netbeans.api.annotations.common.NonNull;
import org.netbeans.api.progress.ProgressUtils;
import org.netbeans.api.project.Project;
import org.netbeans.modules.java.api.common.project.ui.customizer.CustomizerProvider3;
import org.netbeans.modules.javafx2.project.JFXProjectProperties;
import org.netbeans.modules.javafx2.project.JFXProjectUtils;
import org.netbeans.spi.project.support.ant.PropertyEvaluator;
import org.openide.DialogDescriptor;
import org.openide.DialogDisplayer;
import org.openide.NotifyDescriptor;
import org.openide.awt.MouseUtils;
import org.openide.util.Exceptions;
import org.openide.util.NbBundle;
/**
*
* @author psomol
*/
public class JSEDeploymentPanel extends javax.swing.JPanel {
private final JFXProjectProperties props;
private final Project project;
private final PropertyEvaluator evaluator;
//private final CustomizerProvider3 seCustomizer;
/**
* Creates new form JSEDeploymentPanel
*/
public JSEDeploymentPanel(JFXProjectProperties props) {
this.props = props;
this.project = props.getProject();
this.evaluator = props.getEvaluator();
//seCustomizer = project.getLookup().lookup(CustomizerProvider3.class);
initComponents();
buttonSwitchToJFX.addActionListener( new MainClassListener( project, evaluator ) );
checkBoxKeepJFXRT.setSelected(props.getKeepJFXRTonCP());
}
/**
* 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() {
java.awt.GridBagConstraints gridBagConstraints;
labelKeepJFXRT = new javax.swing.JLabel();
checkBoxKeepJFXRT = new javax.swing.JCheckBox();
labelSwitchToJFX = new javax.swing.JLabel();
buttonSwitchToJFX = new javax.swing.JButton();
filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0));
filler2 = new javax.swing.Box.Filler(new java.awt.Dimension(500, 0), new java.awt.Dimension(500, 0), new java.awt.Dimension(500, 32767));
setLayout(new java.awt.GridBagLayout());
labelKeepJFXRT.setLabelFor(checkBoxKeepJFXRT);
org.openide.awt.Mnemonics.setLocalizedText(labelKeepJFXRT, org.openide.util.NbBundle.getMessage(JSEDeploymentPanel.class, "JSEDeploymentPanel.labelKeepJFXRT.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(25, 0, 0, 0);
add(labelKeepJFXRT, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(checkBoxKeepJFXRT, org.openide.util.NbBundle.getMessage(JSEDeploymentPanel.class, "JSEDeploymentPanel.checkBoxKeepJFXRT.text")); // NOI18N
checkBoxKeepJFXRT.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
checkBoxKeepJFXRTActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(7, 15, 0, 0);
add(checkBoxKeepJFXRT, gridBagConstraints);
checkBoxKeepJFXRT.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(JSEDeploymentPanel.class, "AN_JSEDeploymentPanel.checkBoxKeepJFXRT")); // NOI18N
checkBoxKeepJFXRT.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(JSEDeploymentPanel.class, "AD_JSEDeploymentPanel.checkBoxKeepJFXRT")); // NOI18N
labelSwitchToJFX.setLabelFor(buttonSwitchToJFX);
org.openide.awt.Mnemonics.setLocalizedText(labelSwitchToJFX, org.openide.util.NbBundle.getMessage(JSEDeploymentPanel.class, "JSEDeploymentPanel.labelSwitchToJFX.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(25, 0, 0, 0);
add(labelSwitchToJFX, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(buttonSwitchToJFX, org.openide.util.NbBundle.getMessage(JSEDeploymentPanel.class, "JSEDeploymentPanel.buttonSwitchToJFX.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(8, 15, 0, 0);
add(buttonSwitchToJFX, gridBagConstraints);
buttonSwitchToJFX.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(JSEDeploymentPanel.class, "AN_JSEDeploymentPanel.buttonSwitchToJFX")); // NOI18N
buttonSwitchToJFX.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(JSEDeploymentPanel.class, "AD_JSEDeploymentPanel.buttonSwitchToJFX")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
add(filler1, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 10);
add(filler2, gridBagConstraints);
}// </editor-fold>//GEN-END:initComponents
private void checkBoxKeepJFXRTActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkBoxKeepJFXRTActionPerformed
boolean sel = checkBoxKeepJFXRT.isSelected();
props.setKeepJFXRTonCP(sel);
}//GEN-LAST:event_checkBoxKeepJFXRTActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton buttonSwitchToJFX;
private javax.swing.JCheckBox checkBoxKeepJFXRT;
private javax.swing.Box.Filler filler1;
private javax.swing.Box.Filler filler2;
private javax.swing.JLabel labelKeepJFXRT;
private javax.swing.JLabel labelSwitchToJFX;
// End of variables declaration//GEN-END:variables
// Innerclasses -------------------------------------------------------------
private class MainClassListener implements ActionListener /*, DocumentListener */ {
private final JButton okButton;
private final PropertyEvaluator evaluator;
private final Project project;
MainClassListener( final @NonNull Project p, final @NonNull PropertyEvaluator pe ) {
this.evaluator = pe;
this.project = p;
this.okButton = new JButton (NbBundle.getMessage (JSEDeploymentPanel.class, "LBL_SwitchToFX")); // NOI18N
this.okButton.getAccessibleContext().setAccessibleDescription (NbBundle.getMessage (JSEDeploymentPanel.class, "AD_SwitchToFX")); // NOI18N
}
// Implementation of ActionListener ------------------------------------
/** Handles button events
*/
@Override
public void actionPerformed( ActionEvent e ) {
final JSEApplicationClassChooser panel = new JSEApplicationClassChooser(project, evaluator);
Object[] options = new Object[] {
okButton,
DialogDescriptor.CANCEL_OPTION
};
panel.addChangeListener (new ChangeListener () {
@Override
public void stateChanged(ChangeEvent e) {
if (e != null && e.getSource () instanceof MouseEvent && MouseUtils.isDoubleClick (((MouseEvent)e.getSource ()))) {
// click button and finish the dialog with selected class
okButton.doClick();
} else {
//okButton.setEnabled (panel.getSelectedClass () != null);
okButton.setEnabled (panel.isClassSelectionValid());
}
}
});
okButton.setEnabled (panel.isClassSelectionValid());
DialogDescriptor desc = new DialogDescriptor (
panel,
NbBundle.getMessage (JSEDeploymentPanel.class, "LBL_ChooseMainClassForSwitch_Title" ), // NOI18N
true,
options,
options[0],
DialogDescriptor.BOTTOM_ALIGN,
null,
null);
//desc.setMessageType (DialogDescriptor.INFORMATION_MESSAGE);
//panel.setDialogDescriptor(desc);
Dialog dlg = DialogDisplayer.getDefault ().createDialog (desc);
dlg.setVisible (true);
if (desc.getValue() == options[0]) {
NotifyDescriptor d =
new NotifyDescriptor.Confirmation(
NbBundle.getMessage (JSEDeploymentPanel.class, "JSEDeploymentPanel.confirmSwitchToFX.text" ), // NOI18N
NbBundle.getMessage (JSEDeploymentPanel.class, "JSEDeploymentPanel.confirmSwitchToFX.title" ), // NOI18N
NotifyDescriptor.OK_CANCEL_OPTION);
if (DialogDisplayer.getDefault().notify(d) == NotifyDescriptor.OK_OPTION) {
CustomizerProvider3 canceller = project.getLookup().lookup(CustomizerProvider3.class);
if(canceller != null) {
canceller.cancelCustomizer();
ProgressUtils.showProgressDialogAndRun(new Runnable() {
@Override
public void run() {
try {
JFXProjectUtils.switchProjectToFX(project, panel);
} catch (IOException ex) {
Exceptions.printStackTrace(ex);
}
}
}, NbBundle.getMessage (JSEDeploymentPanel.class, "JSEDeploymentPanel.confirmSwitchToFX.progress.title" ) // NOI18N
);
}
}
}
dlg.dispose();
}
}
}