import org.eclipse.swt.widgets.TableItem;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.events.ExpansionAdapter;
+import org.eclipse.ui.forms.events.ExpansionEvent;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private CssStyleEventDelegater delegater;
private List<String> currentSelectors;
private Map<String, List<String>> selectorMap = new HashMap<String, List<String>>();
+ private Composite buttons;
+ private ExpansionAdapter expansionListener = new ExpansionAdapter() {
+
+ @Override
+ public void expansionStateChanged(ExpansionEvent e) {
+ ExpandableComposite expandableComposite = (ExpandableComposite) e.getSource();
+ if (e.getState()) {
+ if (buttons == null || buttons.isDisposed()) {
+ createButtons();
+ }
+ expandableComposite.setTextClient(buttons);
+ } else {
+ expandableComposite.setTextClient(null);
+ }
+ }
+ };
public CssSelectorCategoryComposite(Composite parent, String name, CssFile cssFile,
CssStyleEventDelegater delegater) {
@Override
public void dispose() {
cssFile.removeCssSelectorListener(this);
+ ExpandableComposite expandableComposite = getExpandableComposite();
+ expandableComposite.removeExpansionListener(expansionListener);
+ super.dispose();
+
}
private void createListBox() {
composite.setLayout(new FormLayout());
/* buttons */
- Composite btns = new Composite(expandableComposite, SWT.NONE);
- btns.setLayout(new RowLayout());
-
- Label addButton = new Label(btns, SWT.NONE);
- Label deleteButton = new Label(btns, SWT.NONE);
- addButton.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
- "animator_action_add_normal.png"));
- addMouseListenerForSelector(addButton, "add");
- deleteButton.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
- "animator_action_delete_normal.png"));
- addMouseListenerForSelector(deleteButton, "delete");
- expandableComposite.setTextClient(btns);
- /* buttons */
+ createButtons();
+ expandableComposite.setTextClient(buttons);
listBox = new Table(composite, SWT.FULL_SELECTION | SWT.V_SCROLL | SWT.BORDER);
listBox.setLinesVisible(false);
listBox.setLayoutData(formData);
expandableComposite.pack();
+
+ expandableComposite.addExpansionListener(expansionListener);
+ }
+
+ private void createButtons() {
+ ExpandableComposite expandableComposite = getExpandableComposite();
+ buttons = new Composite(expandableComposite, SWT.NONE);
+ buttons.setLayout(new RowLayout());
+
+ Label addButton = new Label(buttons, SWT.NONE);
+ Label deleteButton = new Label(buttons, SWT.NONE);
+ addButton.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+ "animator_action_add_normal.png"));
+ addMouseListenerForSelector(addButton, "add");
+ deleteButton.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+ "animator_action_delete_normal.png"));
+ addMouseListenerForSelector(deleteButton, "delete");
}
private void addMouseListenerForSelector(final Label label, final String function) {