org.bndtools.utils.swt.SashHighlightForm Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.bndtools.templating.gitrepo Show documentation
Show all versions of org.bndtools.templating.gitrepo Show documentation
org.bndtools.templating.gitrepo
package org.bndtools.utils.swt;
import java.lang.reflect.Field;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Sash;
/**
*
* SWT's {@link SashForm} is moronic. There is no way to set the colour of just
* the sashes... calling {@link #setBackground(Color)} results in setting the
* background colour of the entire form area.
*
*
* This class has to use nasty hacks to give us access to the superclass fields
* that we need to modify. It's a toss up between this and completely
* reimplementing {@link SashForm}.
*
*
* @author Neil Bartlett
*/
public class SashHighlightForm extends SashForm {
public SashHighlightForm(Composite parent, int style) {
super(parent, style);
}
public void setSashBackground(Color color) {
try {
Field bgfield = SashForm.class.getDeclaredField("background");
bgfield.setAccessible(true);
bgfield.set(this, color);
Field sashesField = SashForm.class.getDeclaredField("sashes");
sashesField.setAccessible(true);
Sash[] sashes = (Sash[]) sashesField.get(this);
for (Sash sash : sashes) {
sash.setBackground(color);
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
public void setSashForeground(Color color) {
try {
Field fgfield = SashForm.class.getDeclaredField("foreground");
fgfield.setAccessible(true);
fgfield.set(this, color);
Field sashesField = SashForm.class.getDeclaredField("sashes");
sashesField.setAccessible(true);
Sash[] sashes = (Sash[]) sashesField.get(this);
for (Sash sash : sashes) {
sash.setForeground(color);
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy