lvcs-impl
[idea/community.git] / lang-api / src / com / intellij / facet / ui / MultipleFacetEditorHelper.java
1 package com.intellij.facet.ui;
2
3 import com.intellij.util.NotNullFunction;
4 import com.intellij.util.ui.ThreeStateCheckBox;
5 import org.jetbrains.annotations.NotNull;
6
7 import javax.swing.*;
8
9 /**
10  * Use {@link com.intellij.facet.ui.FacetEditorsFactory#createMultipleFacetEditorHelper()} to create instance of this class.
11  *
12  * @author nik
13  */
14 public interface MultipleFacetEditorHelper {
15
16   /**
17    * Binds <code>common</code> 3-state checkbox to checkboxes in facet editors in such a way that all changes in it will be propogated to
18    * target checkboxes.
19    * @param common checkbox
20    * @param editors editors
21    * @param fun maps a facet editor to checkbox inside one of its tabs
22    */
23   void bind(@NotNull ThreeStateCheckBox common, @NotNull FacetEditor[] editors, @NotNull NotNullFunction<FacetEditor, JCheckBox> fun);
24
25   void bind(@NotNull JTextField common, @NotNull FacetEditor[] editors, @NotNull NotNullFunction<FacetEditor, JTextField> fun);
26
27   void bind(@NotNull JComboBox common, @NotNull FacetEditor[] editors, @NotNull NotNullFunction<FacetEditor, JComboBox> fun);
28
29   /**
30    * Removes all bindings registered by this helper
31    */
32   void unbind();
33 }