package com.aspose.wizards.maven;
import com.aspose.utils.AsposeJavaAPI;
import com.aspose.utils.AsposeMavenProjectManager;
import com.aspose.utils.AsposeConstants;
import com.aspose.utils.AsposeWordsJavaAPI;
import com.aspose.utils.execution.CallBackHandler;
import com.aspose.utils.execution.ModalTaskImpl;
import com.intellij.ide.util.projectWizard.ModuleWizardStep;
import com.intellij.ide.util.projectWizard.WizardContext;
import com.intellij.ide.wizard.CommitStepException;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.uiDesigner.core.GridConstraints;
import com.intellij.uiDesigner.core.GridLayoutManager;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.util.ResourceBundle;
public class AsposeMavenModuleWizardStep extends ModuleWizardStep {
private ImageIcon icon = new ImageIcon(getClass().getResource("/resources/long_bannerIntelliJ.png"));
private final Project myProjectOrNull;
private final AsposeMavenModuleBuilder myBuilder;
private final WizardContext myContext;
private JPanel myMainPanel;
private JTextField myGroupIdField;
private JTextField myArtifactIdField;
private JTextField myVersionField;
private JPanel myArchetypesPanel;
private JCheckBox alsoDownloadExampleSourceCheckBox;
private JTextPane fieldTextPane;
private JLabel bannerLbl;
public AsposeMavenModuleWizardStep(Project project, AsposeMavenModuleBuilder builder, WizardContext context, boolean includeArtifacts) {
myProjectOrNull = project;
myBuilder = builder;
myContext = context;
$$$setupUI$$$();
initComponents();
loadSettings();
bannerLbl.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
int labelwidth = bannerLbl.getWidth();
int labelheight = bannerLbl.getHeight();
Image img = icon.getImage();
bannerLbl.setIcon(new ImageIcon(img.getScaledInstance(labelwidth, labelheight, Image.SCALE_FAST)));
}
});
}
private void initComponents() {
ActionListener updatingListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
updateComponents();
}
};
}
@Override
public JComponent getPreferredFocusedComponent() {
return myGroupIdField;
}
@Override
public void onStepLeaving() {
saveSettings();
}
private void loadSettings() {
}
private void saveSettings() {
}
public JComponent getComponent() {
return myMainPanel;
}
@Override
public boolean validate() throws ConfigurationException {
if (StringUtil.isEmptyOrSpaces(myGroupIdField.getText())) {
throw new ConfigurationException("Please, specify groupId");
}
if (StringUtil.isEmptyOrSpaces(myArtifactIdField.getText())) {
throw new ConfigurationException("Please, specify artifactId");
}
if (StringUtil.isEmptyOrSpaces(myVersionField.getText())) {
throw new ConfigurationException("Please, specify version");
}
return true;
}
private static void setTestIfEmpty(@NotNull JTextField artifactIdField, @Nullable String text) {
if (StringUtil.isEmpty(artifactIdField.getText())) {
artifactIdField.setText(StringUtil.notNullize(text));
}
}
@Override
public void updateStep() {
MavenId projectId = myBuilder.getMyProjectId();
if (projectId == null) {
setTestIfEmpty(myArtifactIdField, myBuilder.getName());
setTestIfEmpty(myGroupIdField, myBuilder.getName());
setTestIfEmpty(myVersionField, "1.0-SNAPSHOT");
} else {
setTestIfEmpty(myArtifactIdField, projectId.getArtifactId());
setTestIfEmpty(myGroupIdField, projectId.getGroupId());
setTestIfEmpty(myVersionField, projectId.getVersion());
}
updateComponents();
}
private void updateComponents() {
myGroupIdField.setEnabled(true);
myVersionField.setEnabled(true);
}
@Override
public void updateDataModel() {
myContext.setProjectBuilder(myBuilder);
myBuilder.setMyProjectId(new MavenId(myGroupIdField.getText(),
myArtifactIdField.getText(),
myVersionField.getText()));
if (myContext.getProjectName() == null) {
myContext.setProjectName(myBuilder.getMyProjectId().getArtifactId());
}
}
@Override
public String getHelpId() {
return "reference.dialogs.new.project.fromScratch.maven";
}
@Override
public void disposeUIResources() {
}
@Override
public void onWizardFinished() throws CommitStepException {
AsposeMavenProjectManager asposeMavenProjectManager = AsposeMavenProjectManager.initialize(myProjectOrNull);
AsposeJavaAPI asposeWordsJavaAPI = AsposeWordsJavaAPI.initialize(asposeMavenProjectManager);
if (alsoDownloadExampleSourceCheckBox.isSelected()) {
if (!AsposeMavenProjectManager.isInternetConnected()) {
throw new CommitStepException(AsposeConstants.EXAMPLES_INTERNET_CONNECTION_REQUIRED_MESSAGE);
}
CallBackHandler callback = new DownloadExamplesCallback(asposeWordsJavaAPI);
final ModalTaskImpl modalTaskDownloadExamples = new ModalTaskImpl(myProjectOrNull, callback, ResourceBundle.getBundle("Bundle").getString("AsposeManager.progressExamplesTitle"));
ApplicationManager.getApplication().invokeAndWait(new Runnable() {
@Override
public void run() {
ProgressManager.getInstance().run(modalTaskDownloadExamples);
}
}, ModalityState.defaultModalityState());
if (!modalTaskDownloadExamples.isDone()) {
throw new CommitStepException(AsposeConstants.EXAMPLES_DOWNLOAD_FAIL);
}
}
if (!AsposeMavenProjectManager.isInternetConnected()) {
throw new CommitStepException(AsposeConstants.MAVEN_INTERNET_CONNECTION_REQUIRED_MESSAGE);
}
CallBackHandler callback = new CreateMavenProjectCallback();
final ModalTaskImpl modalTaskRetrieveArtifact = new ModalTaskImpl(myProjectOrNull, callback, ResourceBundle.getBundle("Bundle").getString("AsposeManager.progressTitle"));
ApplicationManager.getApplication().invokeAndWait(new Runnable() {
@Override
public void run() {
ProgressManager.getInstance().run(modalTaskRetrieveArtifact);
}
}, ModalityState.defaultModalityState());
if (!modalTaskRetrieveArtifact.isDone()) {
throw new CommitStepException(AsposeConstants.MAVEN_ARTIFACTS_RETRIEVE_FAIL);
}
}
/**
* Method generated by IntelliJ IDEA GUI Designer
* >>> IMPORTANT!! <<<
* DO NOT edit this method OR call it in your code!
*
* @noinspection ALL
*/
private void $$$setupUI$$$() {
myMainPanel = new JPanel();
myMainPanel.setLayout(new GridLayoutManager(3, 3, new Insets(0, 0, 0, 0), -1, -1));
myArchetypesPanel = new JPanel();
myArchetypesPanel.setLayout(new BorderLayout(0, 0));
myArchetypesPanel.setInheritsPopupMenu(true);
myMainPanel.add(myArchetypesPanel, new GridConstraints(2, 0, 1, 3, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false));
alsoDownloadExampleSourceCheckBox = new JCheckBox();
this.$$$loadButtonText$$$(alsoDownloadExampleSourceCheckBox, ResourceBundle.getBundle("Bundle").getString("AsposeWizardPanel.WizardStep.ExampleChkbox"));
myArchetypesPanel.add(alsoDownloadExampleSourceCheckBox, BorderLayout.SOUTH);
fieldTextPane = new JTextPane();
fieldTextPane.setText("");
myArchetypesPanel.add(fieldTextPane, BorderLayout.WEST);
bannerLbl = new JLabel();
bannerLbl.setAlignmentY(0.0f);
bannerLbl.setHorizontalAlignment(2);
bannerLbl.setHorizontalTextPosition(2);
bannerLbl.setIcon(new ImageIcon(getClass().getResource("/resources/long_bannerIntelliJ.png")));
bannerLbl.setIconTextGap(0);
bannerLbl.setText("");
bannerLbl.setVerticalAlignment(1);
bannerLbl.setVerticalTextPosition(1);
myMainPanel.add(bannerLbl, new GridConstraints(0, 0, 1, 2, GridConstraints.ANCHOR_NORTH, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, new Dimension(10, -1), new Dimension(390, -1), new Dimension(66666, -1), 1, false));
final JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayoutManager(3, 2, new Insets(10, 10, 10, 10), -1, -1));
panel1.setAlignmentX(0.0f);
panel1.setAlignmentY(0.0f);
panel1.setOpaque(true);
myMainPanel.add(panel1, new GridConstraints(1, 0, 1, 2, GridConstraints.ANCHOR_NORTH, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false));
panel1.setBorder(BorderFactory.createTitledBorder(null, ResourceBundle.getBundle("Bundle").getString("AsposeWizardPanel.WizardStep.headingMavn"), TitledBorder.LEFT, TitledBorder.DEFAULT_POSITION, new Font(panel1.getFont().getName(), panel1.getFont().getStyle(), panel1.getFont().getSize()), new Color(-16777216)));
final JLabel label1 = new JLabel();
label1.setText("GroupId");
panel1.add(label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
myGroupIdField = new JTextField();
panel1.add(myGroupIdField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(444, 24), null, 0, false));
final JLabel label2 = new JLabel();
label2.setText("ArtifactId");
panel1.add(label2, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
myArtifactIdField = new JTextField();
panel1.add(myArtifactIdField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(444, 24), null, 0, false));
final JLabel label3 = new JLabel();
label3.setText("Version");
panel1.add(label3, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
myVersionField = new JTextField();
myVersionField.setText("");
panel1.add(myVersionField, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(444, 24), null, 0, false));
}
/**
* @noinspection ALL
*/
private void $$$loadButtonText$$$(AbstractButton component, String text) {
StringBuffer result = new StringBuffer();
boolean haveMnemonic = false;
char mnemonic = '\0';
int mnemonicIndex = -1;
for (int i = 0; i < text.length(); i++) {
if (text.charAt(i) == '&') {
i++;
if (i == text.length()) break;
if (!haveMnemonic && text.charAt(i) != '&') {
haveMnemonic = true;
mnemonic = text.charAt(i);
mnemonicIndex = result.length();
}
}
result.append(text.charAt(i));
}
component.setText(result.toString());
if (haveMnemonic) {
component.setMnemonic(mnemonic);
component.setDisplayedMnemonicIndex(mnemonicIndex);
}
}
/**
* @noinspection ALL
*/
public JComponent $$$getRootComponent$$$() {
return myMainPanel;
}
}