package com.yoursway.swt.inspector; import static com.google.common.collect.Lists.newArrayList; import static com.yoursway.utils.DebugOutputHelper.simpleNameOf; import java.util.Collection; import org.eclipse.swt.widgets.Control; public class ControlDescriptor { private Collection<ControlStyle> styles = newArrayList(); private final Class<? extends Control> klass; private final ControlDescriptor baseDescriptor; private boolean stylesKnown = false; public ControlDescriptor(Class<? extends Control> klass, ControlDescriptor baseDescriptor) { this.klass = klass; this.baseDescriptor = baseDescriptor; } public String className() { return simpleNameOf(klass); } public boolean isGenericControl() { return klassIs(Control.class); } public ControlDescriptor baseDescriptor() { return baseDescriptor; } public String name(Control control) { return className(); } public void noStyles() { stylesKnown = true; } public void addStyle(int value, String name) { if (name == null) throw new NullPointerException("style is null"); stylesKnown = true; styles.add(new ControlStyle(value, name)); } public boolean klassIs(Class<? extends Control> klass) { return this.klass.equals(klass); } public Collection<String> stylesOf(Control control) { return stylesOf(control.getStyle()); } public Collection<String> stylesOf(int styleValue) { Collection<String> result = newArrayList(); for (ControlStyle style : styles) if (style.isSet(styleValue)) result.add(style.getName()); return result; } public boolean stylesKnown() { return stylesKnown; } }