IDEA-157507 Use "deploymentType" field in serverInfo to detect instances of JIRA...
[idea/community.git] / plugins / tasks / tasks-core / jira / src / com / intellij / tasks / jira / JiraRepositoryEditor.java
1 /*
2  * Copyright 2000-2013 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.tasks.jira;
17
18 import com.intellij.openapi.project.Project;
19 import com.intellij.tasks.config.BaseRepositoryEditor;
20 import com.intellij.tasks.jira.jql.JqlLanguage;
21 import com.intellij.ui.EditorTextField;
22 import com.intellij.ui.LanguageTextField;
23 import com.intellij.ui.components.JBLabel;
24 import com.intellij.util.Consumer;
25 import com.intellij.util.ui.FormBuilder;
26 import com.intellij.util.ui.UIUtil;
27 import org.jetbrains.annotations.Nullable;
28
29 import javax.swing.*;
30
31 /**
32  * @author Mikhail Golubev
33  */
34 public class JiraRepositoryEditor extends BaseRepositoryEditor<JiraRepository> {
35   private EditorTextField mySearchQueryField;
36   private JBLabel mySearchLabel;
37   private JBLabel myNoteLabel;
38
39   public JiraRepositoryEditor(Project project, JiraRepository repository, Consumer<JiraRepository> changeListener) {
40     super(project, repository, changeListener);
41   }
42
43   @Override
44   public void apply() {
45     myRepository.setSearchQuery(mySearchQueryField.getText());
46     super.apply();
47     enableJqlSearchIfSupported();
48   }
49
50   @Override
51   protected void afterTestConnection(boolean connectionSuccessful) {
52     super.afterTestConnection(connectionSuccessful);
53     if (connectionSuccessful) {
54       enableJqlSearchIfSupported();
55     }
56     updateNote();
57   }
58
59   @Nullable
60   @Override
61   protected JComponent createCustomPanel() {
62     mySearchQueryField = new LanguageTextField(JqlLanguage.INSTANCE, myProject, myRepository.getSearchQuery());
63     enableJqlSearchIfSupported();
64     installListener(mySearchQueryField);
65     mySearchLabel = new JBLabel("Search:", SwingConstants.RIGHT);
66     myNoteLabel = new JBLabel();
67     myNoteLabel.setComponentStyle(UIUtil.ComponentStyle.SMALL);
68     updateNote();
69     return FormBuilder.createFormBuilder()
70       .addLabeledComponent(mySearchLabel, mySearchQueryField)
71       .addComponentToRightColumn(myNoteLabel)
72       .getPanel();
73   }
74
75   private void updateNote() {
76     myNoteLabel.setText("JQL search cannot be used in JIRA versions prior 4.2. Your version: " + myRepository.getPresentableVersion());
77   }
78
79   @Override
80   public void setAnchor(@Nullable final JComponent anchor) {
81     super.setAnchor(anchor);
82     mySearchLabel.setAnchor(anchor);
83   }
84
85   private void enableJqlSearchIfSupported() {
86     mySearchQueryField.setEnabled(myRepository.isJqlSupported());
87   }
88 }