void (@Nullable DesignerEditorPanel designer, @Nullable EditableArea area) { PropertyTableTab[] tabs = designer == null ? null : designer.getPropertyTableTabs(); if (!Arrays.equals(myTabs, tabs)) { myTabs = tabs; myTabPanel.removeAll(); if (tabs != null && tabs.length > 1) { if (!ArrayUtil.contains(myCurrentTab, tabs)) { myCurrentTab = tabs[0]; } for (PropertyTableTab tab : tabs) { myTabPanel.add(new TableTabAction(this, tab).getButton()); } } else { myCurrentTab = null; } myTitleLabel.setVisible(myCurrentTab == null); myTabPanel.revalidate(); } TablePanelActionPolicy policy = designer == null ? TablePanelActionPolicy.EMPTY : designer.getTablePanelActionPolicy(); if (!Comparing.equal(myActionPolicy, policy)) { myActionPolicy = policy; for (AnAction action : myActions) { if (action instanceof Separator) { continue; } boolean visible = policy.showAction(action); Presentation presentation = action.getTemplatePresentation(); presentation.setVisible(visible); JComponent button = (JComponent)presentation.getClientProperty(BUTTON_KEY); if (button != null) { button.setVisible(visible); } } myActionPanel.revalidate(); } myPropertyTable.setArea(designer, area); }