package com.bitbakery.plugin.arc.config;
/*
* Copyright (c) Kurt Christensen, 2009
*
* Licensed under the Artistic 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.opensource.org/licenses/artistic-license-2.0.php
*
* 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..
*/
import static com.bitbakery.plugin.arc.ArcStrings.message;
import com.intellij.ide.BrowserUtil;
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.awt.*;
import static java.awt.Cursor.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class ArcConfigPanel {
private JComponent rootPanel;
private TextFieldWithBrowseButton arcHomeField;
private TextFieldWithBrowseButton mzSchemeHomeField;
private TextFieldWithBrowseButton arcInitializationFileField;
private JLabel arcUrl;
private JLabel mzSchemeUrl;
private JLabel arcTutorialUrl;
public ArcConfigPanel() {
String msg = message("plugin.name");
arcHomeField.addBrowseFolderListener(msg, msg, null, new Chooser(false, true));
mzSchemeHomeField.addBrowseFolderListener(msg, msg, null, new Chooser(false, true));
arcInitializationFileField.addBrowseFolderListener(msg, msg, null, new Chooser(false, true));
enableHyperlink(arcUrl);
enableHyperlink(mzSchemeUrl);
enableHyperlink(arcTutorialUrl);
}
private void enableHyperlink(final JLabel label) {
label.addMouseListener(new MouseAdapter() {
private Color textColor;
{
label.setForeground(Color.BLUE);
textColor = label.getForeground();
}
public void mouseEntered(MouseEvent mouseEvent) {
label.setCursor(getPredefinedCursor(HAND_CURSOR));
label.setForeground(Color.DARK_GRAY);
}
public void mouseExited(MouseEvent mouseEvent) {
label.setForeground(textColor);
label.setCursor(getDefaultCursor());
}
public void mouseClicked(MouseEvent mouseEvent) {
BrowserUtil.launchBrowser(label.getText());
}
});
}
public JComponent getPanel() {
return rootPanel;
}
public void load(@NotNull ArcSettings settings) {
arcHomeField.setText(settings.arcHome);
mzSchemeHomeField.setText(settings.mzSchemeHome);
arcInitializationFileField.setText(settings.arcInitializationFile);
}
public boolean isModified(@NotNull ArcSettings settings) {
return !settings.arcHome.equals(arcHomeField.getText())
|| !settings.mzSchemeHome.equals(mzSchemeHomeField.getText())
|| !settings.arcInitializationFile.equals(arcInitializationFileField.getText());
}
public void save(@NotNull ArcSettings settings) {
settings.arcHome = arcHomeField.getText();
settings.mzSchemeHome = mzSchemeHomeField.getText();
settings.arcInitializationFile = arcInitializationFileField.getText();
}
private static class Chooser extends FileChooserDescriptor {
public Chooser(boolean chooseFiles, boolean chooseFolders) {
super(chooseFiles, chooseFolders, false, false, false, false);
}
}
}