/* * Copyright 2000-2008 JetBrains s.r.o. * Licensed 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.jetbrains.plugins.clojure.config.ui; import com.intellij.facet.Facet; import com.intellij.facet.ui.FacetEditorContext; import com.intellij.facet.ui.FacetEditorTab; import com.intellij.facet.ui.FacetValidatorsManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.Module; import com.intellij.openapi.options.ConfigurationException; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.clojure.ClojureBundle; import org.jetbrains.plugins.clojure.config.ClojureModuleSettings; import javax.swing.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; /** * @author ilyas */ public class ClojureFacetSettingsTab extends FacetEditorTab { public static final Logger LOG = Logger.getInstance("org.jetbrains.plugins.clojure.config.ui.ClojureFacetTab"); private Module myModule; private JPanel myPanel; private JTextField myJvmOpts; private JTextField myReplOpts; private JTextField myReplClass; private JPanel myReplPanel; private JCheckBox myUseNREPLCheckBox; private JTextField myHostTextField; private JTextField myPortTextField; private FacetEditorContext myEditorContext; private FacetValidatorsManager myValidatorsManager; private final ClojureModuleSettings mySettings; public ClojureFacetSettingsTab(FacetEditorContext editorContext, FacetValidatorsManager validatorsManager, ClojureModuleSettings settings) { myModule = editorContext.getModule(); myEditorContext = editorContext; myValidatorsManager = validatorsManager; mySettings = settings; myJvmOpts.setText(mySettings.myJvmOpts); myReplClass.setText(mySettings.myReplClass); myReplOpts.setText(mySettings.myReplOpts); boolean runNrepl = mySettings.myRunNrepl; myUseNREPLCheckBox.setSelected(runNrepl); myHostTextField.setEnabled(runNrepl); myPortTextField.setEnabled(runNrepl); myHostTextField.setText(mySettings.myNreplHost); myPortTextField.setText(mySettings.myReplPort); myUseNREPLCheckBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { final boolean selected = myUseNREPLCheckBox.isSelected(); myHostTextField.setEnabled(selected); myPortTextField.setEnabled(selected); } }); reset(); } @Nls public String getDisplayName() { return ClojureBundle.message("clojure.sdk.configuration"); } public JComponent createComponent() { return myPanel; } public boolean isModified() { return !myJvmOpts.getText().trim().equals(mySettings.myJvmOpts) || !myReplClass.getText().trim().equals(mySettings.myReplClass) || !myReplOpts.getText().trim().equals(mySettings.myReplOpts) || !myHostTextField.getText().trim().equals(mySettings.myNreplHost) || !myPortTextField.getText().trim().equals(mySettings.myReplPort) || myUseNREPLCheckBox.isSelected() != mySettings.myRunNrepl; } @Override public String getHelpTopic() { return super.getHelpTopic(); } public void onFacetInitialized(@NotNull Facet facet) { } public void apply() throws ConfigurationException { mySettings.myJvmOpts = myJvmOpts.getText().trim(); mySettings.myReplClass = myReplClass.getText().trim(); mySettings.myReplOpts = myReplOpts.getText().trim(); mySettings.myNreplHost = myHostTextField.getText().trim(); mySettings.myReplPort = myPortTextField.getText().trim(); mySettings.myRunNrepl = myUseNREPLCheckBox.isSelected(); } public void reset() { myJvmOpts.setText(mySettings.myJvmOpts); myReplClass.setText(mySettings.myReplClass); myReplClass.setText(mySettings.myReplClass); myPortTextField.setText(mySettings.myReplPort); myHostTextField.setText(mySettings.myNreplHost); myUseNREPLCheckBox.setSelected(mySettings.myRunNrepl); } public void disposeUIResources() { } private void createUIComponents() { } }