diff options
Diffstat (limited to 'platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryNode.java')
-rw-r--r-- | platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryNode.java | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryNode.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryNode.java new file mode 100644 index 000000000000..24a26ece96d9 --- /dev/null +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryNode.java @@ -0,0 +1,97 @@ +/* + * Copyright 2000-2014 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 com.intellij.dvcs.push.ui; + +import com.intellij.openapi.progress.EmptyProgressIndicator; +import com.intellij.openapi.progress.ProgressIndicator; +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.ui.CheckedTreeNode; +import com.intellij.ui.ColoredTreeCellRenderer; +import com.intellij.ui.EditorTextField; +import com.intellij.ui.SimpleTextAttributes; +import org.jetbrains.annotations.NotNull; + +import javax.swing.*; +import javax.swing.border.EmptyBorder; +import java.awt.*; + +public class RepositoryNode extends CheckedTreeNode implements EditableTreeNode { + protected final static String ENTER_REMOTE = "Enter Remote"; + @NotNull private final RepositoryWithBranchPanel myRepositoryPanel; + + private ProgressIndicator myCurrentIndicator; + + public RepositoryNode(@NotNull RepositoryWithBranchPanel repositoryPanel) { + super(repositoryPanel); + myRepositoryPanel = repositoryPanel; + } + + public boolean isCheckboxVisible() { + return true; + } + + @Override + public void render(@NotNull ColoredTreeCellRenderer renderer) { + String repositoryPath = myRepositoryPanel.getRepositoryName(); + renderer.append(repositoryPath, SimpleTextAttributes.GRAY_ATTRIBUTES); + renderer.appendFixedTextFragmentWidth(120); + renderer.append(myRepositoryPanel.getSourceName(), SimpleTextAttributes.REGULAR_ATTRIBUTES); + renderer.append(myRepositoryPanel.getArrow(), SimpleTextAttributes.REGULAR_ATTRIBUTES); + EditorTextField textField = myRepositoryPanel.getRemoteTextFiled(); + renderTargetName(renderer, textField, myRepositoryPanel.getRemoteTargetName()); + Insets insets = BorderFactory.createEmptyBorder().getBorderInsets(textField); + renderer.setBorder(new EmptyBorder(insets)); + } + + protected void renderTargetName(@NotNull ColoredTreeCellRenderer renderer, @NotNull EditorTextField textField, + @NotNull String targetName) { + if (StringUtil.isEmptyOrSpaces(targetName)) { + renderer.append(ENTER_REMOTE, SimpleTextAttributes.GRAY_ITALIC_ATTRIBUTES, textField); + } + else { + renderer.append(targetName, SimpleTextAttributes.SYNTHETIC_ATTRIBUTES, textField); + } + } + + @Override + @NotNull + public String getValue() { + return myRepositoryPanel.getRemoteTargetName(); + } + + @Override + public void fireOnChange(@NotNull String value) { + myRepositoryPanel.fireOnChange(value); + } + + @Override + public void fireOnSelectionChange(boolean isSelected) { + myRepositoryPanel.fireOnSelectionChange(isSelected); + } + + @Override + public void stopLoading() { + if (myCurrentIndicator != null && myCurrentIndicator.isRunning()) { + myCurrentIndicator.cancel(); + } + } + + @Override + @NotNull + public ProgressIndicator startLoading() { + return myCurrentIndicator = new EmptyProgressIndicator(); + } +} |