| /* |
| * Copyright 2002-2005 Sascha Weinreuter |
| * |
| * 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.intellij.plugins.xpathView.ui; |
| |
| import com.intellij.ui.IdeBorderFactory; |
| import org.intellij.plugins.xpathView.Config; |
| |
| import com.intellij.ui.ColorPanel; |
| |
| import org.jetbrains.annotations.NotNull; |
| |
| import javax.swing.*; |
| import java.awt.*; |
| import java.awt.event.ActionEvent; |
| import java.awt.event.ActionListener; |
| |
| public class ConfigUI extends JPanel { |
| |
| private JCheckBox scrollToFirst; |
| private JCheckBox useContextAtCursor; |
| private JCheckBox highlightStartTagOnly; |
| private JCheckBox addErrorStripe; |
| private JCheckBox showInToolbar; |
| private JCheckBox showInMainMenu; |
| private ColorPanel chooseHighlight; |
| private ColorPanel chooseContext; |
| |
| public ConfigUI(Config configuration) { |
| init(); |
| setConfig(configuration); |
| } |
| |
| private void init() { |
| setLayout(new BorderLayout()); |
| JPanel c = this; |
| |
| scrollToFirst = new JCheckBox("Scroll first hit into visible area"); |
| scrollToFirst.setMnemonic('S'); |
| |
| useContextAtCursor = new JCheckBox("Use node at cursor as context node"); |
| useContextAtCursor.setMnemonic('N'); |
| useContextAtCursor.addActionListener(new ActionListener() { |
| public void actionPerformed(ActionEvent e) { |
| stateChanged(); |
| } |
| }); |
| |
| highlightStartTagOnly = new JCheckBox("Highlight only start tag instead of whole tag content"); |
| highlightStartTagOnly.setMnemonic('H'); |
| |
| addErrorStripe = new JCheckBox("Add error stripe markers for each result"); |
| addErrorStripe.setMnemonic('A'); |
| |
| showInToolbar = new JCheckBox("Show actions in Toolbar"); |
| showInToolbar.setMnemonic('T'); |
| showInToolbar.setToolTipText("Uncheck to remove XPath-related actions from the toolbar"); |
| showInMainMenu = new JCheckBox("Show actions in Main Menu"); |
| showInMainMenu.setMnemonic('M'); |
| showInMainMenu.setToolTipText("Uncheck to remove XPath-related actions from the Main-Menubar"); |
| |
| JPanel settings = new JPanel(new BorderLayout()); |
| settings.setBorder(IdeBorderFactory.createTitledBorder("Settings", true)); |
| c.add(c = new JPanel(new BorderLayout()), BorderLayout.NORTH); |
| c.add(settings, BorderLayout.NORTH); |
| |
| settings.add(scrollToFirst, BorderLayout.NORTH); |
| settings.add(settings = new JPanel(new BorderLayout()), BorderLayout.SOUTH); |
| settings.add(useContextAtCursor, BorderLayout.NORTH); |
| settings.add(settings = new JPanel(new BorderLayout()), BorderLayout.SOUTH); |
| settings.add(highlightStartTagOnly, BorderLayout.NORTH); |
| settings.add(settings = new JPanel(new BorderLayout()), BorderLayout.SOUTH); |
| settings.add(addErrorStripe, BorderLayout.NORTH); |
| settings.add(settings = new JPanel(new BorderLayout()), BorderLayout.SOUTH); |
| settings.add(showInToolbar, BorderLayout.NORTH); |
| settings.add(settings = new JPanel(new BorderLayout()), BorderLayout.SOUTH); |
| settings.add(showInMainMenu, BorderLayout.NORTH); |
| settings.add(/*settings = */new JPanel(new BorderLayout()), BorderLayout.SOUTH); |
| |
| JPanel colors = new JPanel(new GridBagLayout()); |
| colors.setBorder(IdeBorderFactory.createTitledBorder("Colors", true)); |
| c.add(c = new JPanel(new BorderLayout()), BorderLayout.SOUTH); |
| c.add(colors, BorderLayout.NORTH); |
| |
| final GridBagConstraints constraints = new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0); |
| |
| colors.add(new JLabel("Highlight color:"), constraints); |
| constraints.gridx = 1; |
| constraints.weightx = 1; |
| |
| chooseHighlight = new ColorPanel(); |
| colors.add(chooseHighlight, constraints); |
| |
| constraints.gridx = 0; |
| constraints.gridy = 1; |
| constraints.weightx = 0; |
| colors.add(new JLabel("Context node color:"), constraints); |
| |
| constraints.gridx = 1; |
| constraints.gridy = 1; |
| constraints.weightx = 1; |
| |
| chooseContext = new ColorPanel(); |
| colors.add(chooseContext, constraints); |
| } |
| |
| @NotNull |
| public Config getConfig() { |
| final Config config = new Config(); |
| config.setHighlightStartTagOnly(highlightStartTagOnly.isSelected()); |
| config.setUseContextAtCursor(useContextAtCursor.isSelected()); |
| config.setScrollToFirst(scrollToFirst.isSelected()); |
| config.setAddErrorStripe(addErrorStripe.isSelected()); |
| config.SHOW_IN_TOOLBAR = showInToolbar.isSelected(); |
| config.SHOW_IN_MAIN_MENU = showInMainMenu.isSelected(); |
| config.getAttributes().setBackgroundColor(chooseHighlight.getSelectedColor()); |
| if (useContextAtCursor.isSelected()) { |
| config.getContextAttributes().setBackgroundColor(chooseContext.getSelectedColor()); |
| } |
| return config; |
| } |
| |
| public void setConfig(@NotNull Config configuration) { |
| scrollToFirst.setSelected(configuration.isScrollToFirst()); |
| highlightStartTagOnly.setSelected(configuration.isHighlightStartTagOnly()); |
| useContextAtCursor.setSelected(configuration.isUseContextAtCursor()); |
| addErrorStripe.setSelected(configuration.isAddErrorStripe()); |
| showInToolbar.setSelected(configuration.SHOW_IN_TOOLBAR); |
| showInMainMenu.setSelected(configuration.SHOW_IN_MAIN_MENU); |
| chooseHighlight.setSelectedColor(configuration.getAttributes().getBackgroundColor()); |
| chooseContext.setSelectedColor(configuration.getContextAttributes().getBackgroundColor()); |
| stateChanged(); |
| } |
| |
| private void stateChanged() { |
| chooseContext.setEnabled(useContextAtCursor.isSelected()); |
| } |
| |
| public static void main(String[] args) { |
| JFrame test = new JFrame("Config test"); |
| test.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); |
| final JPanel comp = new JPanel(new BorderLayout()); |
| comp.add(new ConfigUI(new Config()), BorderLayout.CENTER); |
| test.getContentPane().add(comp); |
| test.setSize(450, 450); |
| test.setVisible(true); |
| } |
| } |