package com.igormaznitsa.ideamindmap.utils; import com.igormaznitsa.meta.annotation.MustNotContainNull; import com.igormaznitsa.mindmap.plugins.api.HasOptions; import com.igormaznitsa.mindmap.swing.services.UIComponentFactory; import com.intellij.openapi.ui.ComboBox; import com.intellij.openapi.ui.JBCheckboxMenuItem; import com.intellij.openapi.ui.JBMenuItem; import com.intellij.openapi.ui.JBPopupMenu; import com.intellij.ui.components.JBCheckBox; import com.intellij.ui.components.JBLabel; import com.intellij.ui.components.JBPanel; import com.intellij.ui.components.JBRadioButton; import com.intellij.ui.components.JBScrollPane; import javax.annotation.Nonnull; import javax.annotation.Nullable; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JCheckBoxMenuItem; import javax.swing.JComboBox; import javax.swing.JEditorPane; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JSeparator; import javax.swing.JSlider; import javax.swing.JTextArea; import javax.swing.JToggleButton; import javax.swing.JToolBar; public class IdeaUIComponentFactory implements UIComponentFactory{ private static class JOptionablePanel extends JBPanel implements HasOptions { private static final long serialVersionUID = 7315573532005732183L; private final HasOptions optionsProcessor; private JOptionablePanel(@Nonnull final HasOptions optionsProcessor){ super(); this.optionsProcessor = optionsProcessor; } @Override public boolean doesSupportKey(@Nonnull final String key) { return this.optionsProcessor.doesSupportKey(key); } @Override @Nonnull @MustNotContainNull public String[] getOptionKeys() { return this.optionsProcessor.getOptionKeys(); } @Override @Nonnull public String getOptionKeyDescription(@Nonnull final String key) { return this.optionsProcessor.getOptionKeyDescription(key); } @Override public void setOption(@Nonnull final String key, @Nullable final String value) { this.optionsProcessor.setOption(key, value); } @Override @Nullable public String getOption(@Nonnull final String key) { return this.optionsProcessor.getOption(key); } } @Override @Nonnull public JPanel makePanel() { return new JBPanel(); } @Nonnull @Override public JPanel makePanelWithOptions(@Nonnull HasOptions hasOptions) { return new JOptionablePanel(hasOptions); } @Nonnull @Override public JToggleButton makeToggleButton() { return new JToggleButton(); } @Nonnull @Override public JRadioButton makeRadioButton() { return new JBRadioButton(); } @Override @Nonnull public JComboBox makeComboBox() { return new ComboBox(); } @Override @Nonnull public JButton makeButton() { return new JButton(); } @Override @Nonnull public JToolBar makeToolBar() { return new JToolBar(); } @Override @Nonnull public JScrollPane makeScrollPane() { return new JBScrollPane(); } @Override @Nonnull public JCheckBox makeCheckBox() { return new JBCheckBox(); } @Override @Nonnull public JLabel makeLabel() { return new JBLabel(); } @Override @Nonnull public JPopupMenu makePopupMenu() { return new JBPopupMenu(); } @Override @Nonnull public JTextArea makeTextArea() { return new JTextArea(); } @Override @Nonnull public JEditorPane makeEditorPane() { return new JEditorPane(); } @Override @Nonnull public JMenuItem makeMenuItem(@Nonnull final String s, final Icon icon) { return new JBMenuItem(s, icon); } @Override @Nonnull public JCheckBoxMenuItem makeCheckboxMenuItem(@Nonnull final String s, final Icon icon, final boolean b) { return new JBCheckboxMenuItem(s, icon, b); } @Override @Nonnull public JSeparator makeMenuSeparator() { return new JSeparator(); } @Override @Nonnull public JMenu makeMenu(@Nonnull final String s) { return new JMenu(s); } @Override @Nonnull public JSlider makeSlider() { return new JSlider(); } }