Search in sources :

Example 1 with KnownDockerImages

use of com.microsoft.azure.docker.model.KnownDockerImages in project azure-tools-for-java by Microsoft.

the class AzureConfigureDockerContainerStep method initUI.

private void initUI() {
    dockerContainerNameTextField.setText(dockerImageDescription.dockerContainerName);
    dockerContainerNameTextField.setToolTipText(AzureDockerValidationUtils.getDockerContainerNameTip());
    dockerContainerNameTextField.setInputVerifier(new InputVerifier() {

        @Override
        public boolean verify(JComponent input) {
            if (AzureDockerValidationUtils.validateDockerContainerName(((JTextField) input).getText())) {
                dockerContainerNameLabel.setVisible(false);
                setDialogButtonsState(doValidate(false) == null);
                return true;
            } else {
                dockerContainerNameLabel.setVisible(true);
                setDialogButtonsState(false);
                return false;
            }
        }
    });
    dockerContainerNameTextField.getDocument().addDocumentListener(resetDialogButtonsState(dockerContainerNameLabel));
    dockerContainerNameLabel.setVisible(false);
    selectContainerButtonGroup = new ButtonGroup();
    selectContainerButtonGroup.add(predefinedDockerfileRadioButton);
    selectContainerButtonGroup.add(customDockerfileRadioButton);
    predefinedDockerfileRadioButton.setSelected(true);
    dockerfileComboBox.setEnabled(true);
    for (KnownDockerImages image : dockerManager.getDefaultDockerImages()) {
        // Add predefined images that can run .WAR as default
        if (!image.isCanRunJarFile()) {
            dockerfileComboBox.addItem(image);
        }
    }
    if (dockerImageDescription.predefinedDockerfile != null) {
        dockerfileComboBox.setSelectedItem(KnownDockerImages.valueOf(dockerImageDescription.predefinedDockerfile));
    } else {
        dockerfileComboBox.setSelectedIndex(0);
    }
    dockerfileComboBox.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            dockerContainerPortSettings.setText(getDefaultPortMapping((KnownDockerImages) dockerfileComboBox.getSelectedItem()));
            setDialogButtonsState(doValidate(false) == null);
        }
    });
    customDockerfileBrowseButton.setEnabled(false);
    customDockerfileBrowseButton.addActionListener(UIUtils.createFileChooserListener(customDockerfileBrowseButton, model.getProject(), FileChooserDescriptorFactory.createSingleLocalFileDescriptor()));
    customDockerfileBrowseButton.getTextField().setToolTipText(AzureDockerValidationUtils.getDockerfilePathTip());
    customDockerfileBrowseButton.getTextField().setInputVerifier(new InputVerifier() {

        @Override
        public boolean verify(JComponent input) {
            if (customDockerfileRadioButton.isSelected() && !AzureDockerValidationUtils.validateDockerfilePath(customDockerfileBrowseButton.getText())) {
                customDockerfileBrowseLabel.setVisible(true);
                setDialogButtonsState(false);
                return false;
            } else {
                customDockerfileBrowseLabel.setVisible(false);
                setDialogButtonsState(doValidate(false) == null);
                return true;
            }
        }
    });
    customDockerfileBrowseButton.getTextField().getDocument().addDocumentListener(resetDialogButtonsState(customDockerfileBrowseLabel));
    customDockerfileBrowseLabel.setVisible(false);
    customDockerfileBrowseButton.setText("");
    predefinedDockerfileRadioButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            dockerfileComboBox.setEnabled(true);
            customDockerfileBrowseLabel.setVisible(false);
            customDockerfileBrowseButton.setEnabled(false);
            setDialogButtonsState(doValidate(false) == null);
        }
    });
    customDockerfileRadioButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            dockerfileComboBox.setEnabled(false);
            customDockerfileBrowseButton.setEnabled(true);
            if (AzureDockerValidationUtils.validateDockerfilePath(customDockerfileBrowseButton.getText())) {
                customDockerfileBrowseLabel.setVisible(false);
                setDialogButtonsState(doValidate(false) == null);
            } else {
                customDockerfileBrowseLabel.setVisible(true);
                setDialogButtonsState(false);
            }
        }
    });
    dockerContainerPortSettings.setText(getDefaultPortMapping((KnownDockerImages) dockerfileComboBox.getSelectedItem()));
    dockerContainerPortSettings.setToolTipText(AzureDockerValidationUtils.getDockerPortSettingsTip());
    dockerContainerPortSettings.setInputVerifier(new InputVerifier() {

        @Override
        public boolean verify(JComponent input) {
            if (AzureDockerValidationUtils.validateDockerPortSettings(dockerContainerPortSettings.getText()) != null) {
                dockerContainerPortSettingsLabel.setVisible(false);
                setDialogButtonsState(doValidate(false) == null);
                return true;
            } else {
                dockerContainerPortSettingsLabel.setVisible(true);
                setDialogButtonsState(false);
                return false;
            }
        }
    });
    dockerContainerPortSettings.getDocument().addDocumentListener(resetDialogButtonsState(dockerContainerPortSettingsLabel));
    dockerContainerPortSettingsLabel.setVisible(false);
}
Also used : ActionListener(java.awt.event.ActionListener) ActionEvent(java.awt.event.ActionEvent) KnownDockerImages(com.microsoft.azure.docker.model.KnownDockerImages)

Example 2 with KnownDockerImages

use of com.microsoft.azure.docker.model.KnownDockerImages in project azure-tools-for-java by Microsoft.

the class AzureConfigureDockerContainerStep method setPredefinedDockerfileOptions.

public void setPredefinedDockerfileOptions(String artifactFileName) {
    boolean isJarFile = artifactFileName.toLowerCase().matches(".*.jar");
    dockerfileComboBox.removeAllItems();
    for (KnownDockerImages image : dockerManager.getDefaultDockerImages()) {
        if (image.isCanRunJarFile() == isJarFile) {
            dockerfileComboBox.addItem(image);
        }
    }
    if (dockerImageDescription.predefinedDockerfile != null) {
        dockerfileComboBox.setSelectedItem(KnownDockerImages.valueOf(dockerImageDescription.predefinedDockerfile));
    } else {
        dockerfileComboBox.setSelectedIndex(0);
    }
    dockerContainerPortSettings.setText(getDefaultPortMapping((KnownDockerImages) dockerfileComboBox.getSelectedItem()));
}
Also used : KnownDockerImages(com.microsoft.azure.docker.model.KnownDockerImages)

Example 3 with KnownDockerImages

use of com.microsoft.azure.docker.model.KnownDockerImages in project azure-tools-for-java by Microsoft.

the class AzureConfigureDockerContainerStep method setPredefinedDockerfileOptions.

public void setPredefinedDockerfileOptions(String artifactFileName) {
    boolean isJarFile = artifactFileName.toLowerCase().matches(".*.jar");
    dockerfileComboBox.removeAll();
    int idx = 0;
    boolean selected = false;
    for (KnownDockerImages predefinedImage : dockerManager.getDefaultDockerImages()) {
        if (predefinedImage.isCanRunJarFile() == isJarFile) {
            dockerfileComboBox.add(predefinedImage.getName());
            dockerfileComboBox.setData(predefinedImage.getName(), predefinedImage);
            if (dockerImageDescription.predefinedDockerfile != null && dockerImageDescription.predefinedDockerfile.equals(predefinedImage)) {
                dockerfileComboBox.select(idx);
                selected = true;
            }
            idx++;
        }
    }
    if (!selected) {
        dockerfileComboBox.select(0);
    }
    dockerContainerPortSettings.setText(getDefaultPortMapping((KnownDockerImages) dockerfileComboBox.getData(dockerfileComboBox.getText())));
}
Also used : KnownDockerImages(com.microsoft.azure.docker.model.KnownDockerImages)

Example 4 with KnownDockerImages

use of com.microsoft.azure.docker.model.KnownDockerImages in project azure-tools-for-java by Microsoft.

the class AzureConfigureDockerContainerStep method initUIMainContainer.

private void initUIMainContainer(Composite mainContainer) {
    dockerContainerNameTextField.setText(dockerImageDescription.dockerContainerName);
    dockerContainerNameTextField.setToolTipText(AzureDockerValidationUtils.getDockerContainerNameTip());
    dockerContainerNameTextField.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(ModifyEvent event) {
            if (AzureDockerValidationUtils.validateDockerContainerName(((Text) event.getSource()).getText())) {
                errDispatcher.removeMessage("dockerContainerNameTextField", dockerContainerNameTextField);
                setErrorMessage(null);
                setPageComplete(doValidate());
            } else {
                errDispatcher.addMessage("dockerContainerNameTextField", AzureDockerValidationUtils.getDockerContainerNameTip(), null, IMessageProvider.ERROR, dockerContainerNameTextField);
                setErrorMessage("Invalid Docker container name");
                setPageComplete(false);
            }
        }
    });
    predefinedDockerfileRadioButton.setSelection(true);
    predefinedDockerfileRadioButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            dockerfileComboBox.setEnabled(true);
            customDockerfileTextField.setEnabled(false);
            customDockerfileBrowseButton.setEnabled(false);
            errDispatcher.removeMessage("customDockerfileTextField", customDockerfileTextField);
            setErrorMessage(null);
            setPageComplete(doValidate());
        }
    });
    int idx = 0;
    boolean selected = false;
    for (KnownDockerImages predefinedImage : dockerManager.getDefaultDockerImages()) {
        // Add predefined images that can run .WAR as default
        if (!predefinedImage.isCanRunJarFile()) {
            dockerfileComboBox.add(predefinedImage.getName());
            dockerfileComboBox.setData(predefinedImage.getName(), predefinedImage);
            if (dockerImageDescription.predefinedDockerfile != null && dockerImageDescription.predefinedDockerfile.equals(predefinedImage)) {
                dockerfileComboBox.select(idx);
                selected = true;
            }
            idx++;
        }
    }
    if (!selected) {
        dockerfileComboBox.select(0);
    }
    dockerfileComboBox.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            dockerContainerPortSettings.setText(getDefaultPortMapping((KnownDockerImages) dockerfileComboBox.getData(dockerfileComboBox.getText())));
            setPageComplete(doValidate());
        }
    });
    customDockerfileRadioButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            dockerfileComboBox.setEnabled(false);
            customDockerfileTextField.setEnabled(true);
            customDockerfileBrowseButton.setEnabled(true);
            setPageComplete(doValidate());
        }
    });
    customDockerfileTextField.setToolTipText(AzureDockerValidationUtils.getDockerfilePathTip());
    customDockerfileTextField.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(ModifyEvent event) {
            if (AzureDockerValidationUtils.validateDockerfilePath(((Text) event.getSource()).getText())) {
                errDispatcher.removeMessage("customDockerfileTextField", customDockerfileTextField);
                setErrorMessage(null);
                setPageComplete(doValidate());
            } else {
                errDispatcher.addMessage("customDockerfileTextField", AzureDockerValidationUtils.getDockerfilePathTip(), null, IMessageProvider.ERROR, customDockerfileTextField);
                setErrorMessage("Invalid Dockerfile location");
                setPageComplete(false);
            }
        }
    });
    customDockerfileBrowseButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            FileDialog fileDialog = new FileDialog(customDockerfileBrowseButton.getShell(), SWT.OPEN);
            fileDialog.setText("Select Custom Dockerfile");
            fileDialog.setFilterPath(System.getProperty("user.home"));
            fileDialog.setFilterExtensions(new String[] { "Dockerfile", "*.*" });
            String path = fileDialog.open();
            if (path == null) {
                return;
            }
            customDockerfileTextField.setText(path);
            setPageComplete(doValidate());
        }
    });
    dockerContainerPortSettings.setText(getDefaultPortMapping((KnownDockerImages) dockerfileComboBox.getData(dockerfileComboBox.getText())));
    dockerContainerPortSettings.setToolTipText(AzureDockerValidationUtils.getDockerPortSettingsTip());
    dockerContainerPortSettings.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(ModifyEvent event) {
            if (AzureDockerValidationUtils.validateDockerPortSettings(((Text) event.getSource()).getText()) != null) {
                errDispatcher.removeMessage("dockerContainerPortSettings", dockerContainerPortSettings);
                setErrorMessage(null);
                setPageComplete(doValidate());
            } else {
                errDispatcher.addMessage("dockerContainerPortSettings", AzureDockerValidationUtils.getDockerPortSettingsTip(), null, IMessageProvider.ERROR, dockerContainerPortSettings);
                setErrorMessage("Invalid Docker container port settings");
                setPageComplete(false);
            }
        }
    });
}
Also used : ModifyEvent(org.eclipse.swt.events.ModifyEvent) ModifyListener(org.eclipse.swt.events.ModifyListener) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) SelectionEvent(org.eclipse.swt.events.SelectionEvent) Text(org.eclipse.swt.widgets.Text) KnownDockerImages(com.microsoft.azure.docker.model.KnownDockerImages) FileDialog(org.eclipse.swt.widgets.FileDialog)

Example 5 with KnownDockerImages

use of com.microsoft.azure.docker.model.KnownDockerImages in project azure-tools-for-java by Microsoft.

the class AzureConfigureDockerContainerStep method doValidate.

public boolean doValidate() {
    if (dockerContainerNameTextField.getText() == null || dockerContainerNameTextField.getText().equals("") || !AzureDockerValidationUtils.validateDockerContainerName(dockerContainerNameTextField.getText())) {
        errDispatcher.addMessage("dockerContainerNameTextField", AzureDockerValidationUtils.getDockerContainerNameTip(), null, IMessageProvider.ERROR, dockerContainerNameTextField);
        setErrorMessage("Invalid Docker container name");
        return false;
    } else {
        errDispatcher.removeMessage("dockerContainerNameTextField", dockerContainerNameTextField);
        setErrorMessage(null);
        dockerImageDescription.dockerContainerName = dockerContainerNameTextField.getText();
    }
    if (predefinedDockerfileRadioButton.getSelection()) {
        KnownDockerImages dockerfileImage = (KnownDockerImages) dockerfileComboBox.getData(dockerfileComboBox.getText());
        if (dockerfileImage == null) {
            errDispatcher.addMessage("dockerfileComboBox", "Missing predefined Dockerfile options", null, IMessageProvider.ERROR, dockerfileComboBox);
            setErrorMessage("Invalid Dockerfile selection");
            return false;
        } else {
            errDispatcher.removeMessage("dockerfileComboBox", dockerfileComboBox);
            setErrorMessage(null);
            dockerImageDescription.predefinedDockerfile = dockerfileImage.name();
            if (dockerImageDescription.artifactPath != null) {
                dockerImageDescription.dockerfileContent = dockerfileImage.getDockerfileContent().replace(KnownDockerImages.DOCKER_ARTIFACT_FILENAME, new File(dockerImageDescription.artifactPath).getName());
            }
        }
    }
    if (customDockerfileRadioButton.getSelection()) {
        String dockerfileName = customDockerfileTextField.getText();
        if (dockerfileName == null || dockerfileName.equals("") || Files.notExists(Paths.get(dockerfileName))) {
            errDispatcher.addMessage("customDockerfileTextField", AzureDockerValidationUtils.getDockerfilePathTip(), null, IMessageProvider.ERROR, customDockerfileTextField);
            setErrorMessage("Invalid Docker container name");
            return false;
        } else {
            try {
                dockerImageDescription.dockerfileContent = new String(Files.readAllBytes(Paths.get(dockerfileName)));
            } catch (Exception e) {
                errDispatcher.addMessage("customDockerfileTextField", AzureDockerValidationUtils.getDockerfilePathTip(), null, IMessageProvider.ERROR, customDockerfileTextField);
                setErrorMessage("Error reading Dockerfile content");
                return false;
            }
            errDispatcher.removeMessage("customDockerfileTextField", customDockerfileTextField);
            setErrorMessage(null);
            dockerImageDescription.predefinedDockerfile = null;
        }
    }
    if (dockerContainerPortSettings.getText() == null || dockerContainerPortSettings.getText().equals("") || AzureDockerValidationUtils.validateDockerPortSettings(dockerContainerPortSettings.getText()) == null) {
        errDispatcher.addMessage("dockerContainerPortSettings", AzureDockerValidationUtils.getDockerPortSettingsTip(), null, IMessageProvider.ERROR, dockerContainerPortSettings);
        setErrorMessage("Invalid Docker container port settings");
        return false;
    } else {
        errDispatcher.removeMessage("dockerContainerPortSettings", dockerContainerPortSettings);
        setErrorMessage(null);
        dockerImageDescription.dockerPortSettings = dockerContainerPortSettings.getText();
    }
    return true;
}
Also used : KnownDockerImages(com.microsoft.azure.docker.model.KnownDockerImages) File(java.io.File)

Aggregations

KnownDockerImages (com.microsoft.azure.docker.model.KnownDockerImages)6 File (java.io.File)2 ValidationInfo (com.intellij.openapi.ui.ValidationInfo)1 ActionEvent (java.awt.event.ActionEvent)1 ActionListener (java.awt.event.ActionListener)1 ModifyEvent (org.eclipse.swt.events.ModifyEvent)1 ModifyListener (org.eclipse.swt.events.ModifyListener)1 SelectionAdapter (org.eclipse.swt.events.SelectionAdapter)1 SelectionEvent (org.eclipse.swt.events.SelectionEvent)1 FileDialog (org.eclipse.swt.widgets.FileDialog)1 Text (org.eclipse.swt.widgets.Text)1