41d77a1ef86229462ed806b1f3879fd685f07eae
[idea/community.git] / platform / editor-ui-api / src / com / intellij / openapi / actionSystem / ActionToolbar.java
1 /*
2  * Copyright 2000-2015 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.openapi.actionSystem;
17
18 import com.intellij.util.ui.JBUI;
19 import org.jetbrains.annotations.NotNull;
20
21 import javax.swing.*;
22 import java.awt.*;
23 import java.util.List;
24
25 /**
26  * Represents a toolbar with a visual presentation.
27  *
28  * @see ActionManager#createActionToolbar(String, ActionGroup, boolean)
29  */
30 public interface ActionToolbar {
31   String ACTION_TOOLBAR_PROPERTY_KEY = "ACTION_TOOLBAR";
32
33   /**
34    * This is default layout policy for the toolbar. It defines that
35    * all toolbar component are in one row / column and they are not wrapped
36    * when toolbar is small
37    */
38   int NOWRAP_LAYOUT_POLICY = 0;
39   /**
40    * This is experimental layout policy which allow toolbar to
41    * wrap components in multiple rows.
42    */
43   int WRAP_LAYOUT_POLICY = 1;
44   /**
45    * This is experimental layout policy which allow toolbar auto-hide and show buttons that don't fit into actual side
46    */
47   int AUTO_LAYOUT_POLICY = 2;
48
49   /** This is default minimum size of the toolbar button */
50   Dimension DEFAULT_MINIMUM_BUTTON_SIZE = JBUI.size(25, 25);
51
52   Dimension NAVBAR_MINIMUM_BUTTON_SIZE = JBUI.size(20, 20);
53
54   /**
55    * @return component which represents the tool bar on UI
56    */
57   JComponent getComponent();
58
59   /**
60    * @return current layout policy
61    * @see #NOWRAP_LAYOUT_POLICY
62    * @see #WRAP_LAYOUT_POLICY
63    */
64   int getLayoutPolicy();
65
66   /**
67    * Sets new component layout policy. Method accepts {@link #WRAP_LAYOUT_POLICY} and
68    * {@link #NOWRAP_LAYOUT_POLICY} values.
69    */
70   void setLayoutPolicy(int layoutPolicy);
71
72   /**
73    * If the value is <code>true</code> then the all button on toolbar are
74    * the same size. It very useful when you create "Outlook" like toolbar.
75    * Currently this method can be considered as hot fix.
76    */
77   void adjustTheSameSize(boolean value);
78
79   /**
80    * Sets minimum size of toolbar button. By default all buttons
81    * at toolbar has 25x25 pixels size.
82    *
83    * @throws IllegalArgumentException
84    *          if <code>size</code>
85    *          is <code>null</code>
86    */
87   void setMinimumButtonSize(@NotNull Dimension size);
88
89   /**
90    * Sets toolbar orientation
91    *
92    * @see javax.swing.SwingConstants#HORIZONTAL
93    * @see javax.swing.SwingConstants#VERTICAL
94    */
95   void setOrientation(int orientation);
96
97   /**
98    * @return maximum button height
99    */
100   int getMaxButtonHeight();
101
102   /**
103    * Forces update of the all actions in the toolbars. Actions, however, normally updated automatically every 500 ms.
104    */
105   void updateActionsImmediately();
106
107   boolean hasVisibleActions();
108
109   /**
110    * @param component will be used for datacontext computations
111    */
112   void setTargetComponent(final JComponent component);
113
114   void setReservePlaceAutoPopupIcon(final boolean reserve);
115
116   void setSecondaryActionsTooltip(String secondaryActionsTooltip);
117
118   void setSecondaryActionsIcon(Icon icon);
119
120   @NotNull
121   List<AnAction> getActions();
122
123   void setMiniMode(boolean minimalMode);
124
125   DataContext getToolbarDataContext();
126 }