Skip to content

Commit ca98961

Browse files
author
gbr
committed
Complete preference page refactor.
1 parent efe131c commit ca98961

File tree

11 files changed

+341
-256
lines changed

11 files changed

+341
-256
lines changed

net.certiv.tools.indentguide.plugin/plugin.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
point="org.eclipse.ui.preferencePages">
66
<page
77
category="org.eclipse.ui.preferencePages.GeneralTextEditor"
8-
class="net.certiv.tools.indentguide.preferences.SettingsPage"
9-
id="net.certiv.tools.indentguide.preferences.SettingsPage"
8+
class="net.certiv.tools.indentguide.preferences.GuidePage"
9+
id="net.certiv.tools.indentguide.preferences.GuidePage"
1010
name="Indent Guide">
1111
</page>
1212
</extension>

net.certiv.tools.indentguide.plugin/src/net/certiv/tools/indentguide/Activator.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import org.eclipse.ui.themes.ColorUtil;
2626
import org.osgi.framework.BundleContext;
2727

28-
import net.certiv.tools.indentguide.preferences.Settings;
28+
import net.certiv.tools.indentguide.preferences.Pref;
2929

3030
public class Activator extends AbstractUIPlugin {
3131

@@ -36,7 +36,9 @@ public class Activator extends AbstractUIPlugin {
3636
private static Activator plugin;
3737

3838
private final IEclipsePreferences[] editorScopes = new IEclipsePreferences[] {
39-
InstanceScope.INSTANCE.getNode(EditorsID), DefaultScope.INSTANCE.getNode(EditorsID) };
39+
InstanceScope.INSTANCE.getNode(EditorsID), //
40+
DefaultScope.INSTANCE.getNode(EditorsID) //
41+
};
4042

4143
private final IPropertyChangeListener themeChange = event -> {
4244
disposeLineColor();
@@ -74,9 +76,9 @@ public void stop(BundleContext context) throws Exception {
7476

7577
public Color getColor() {
7678
if (color == null) {
77-
String key = Settings.LINE_COLOR;
79+
String key = Pref.LINE_COLOR;
7880
if (isDarkTheme()) {
79-
key += Settings.DARK;
81+
key += Pref.DARK;
8082
}
8183
String spec = getPreferenceStore().getString(key);
8284
color = new Color(PlatformUI.getWorkbench().getDisplay(), ColorUtil.getColorValue(spec));

net.certiv.tools.indentguide.plugin/src/net/certiv/tools/indentguide/IndentGuidePainter.java

+12-13
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import org.eclipse.swt.graphics.LineAttributes;
2929
import org.eclipse.swt.graphics.Point;
3030

31-
import net.certiv.tools.indentguide.preferences.Settings;
31+
import net.certiv.tools.indentguide.preferences.Pref;
3232

3333
/**
3434
* A painter for drawing visible indent guide lines.
@@ -57,10 +57,10 @@ public class IndentGuidePainter implements IPainter, PaintListener {
5757
private int lineShift;
5858
private boolean drawLeftEnd;
5959
private boolean drawBlankLine;
60-
private boolean skipCommentBlock;
60+
private boolean drawCommentBlock;
6161

6262
private final IPropertyChangeListener propertyWatcher = event -> {
63-
if (event.getProperty().startsWith(Settings.KEY)) {
63+
if (event.getProperty().startsWith(Pref.KEY)) {
6464
update();
6565
redrawAll();
6666
}
@@ -117,8 +117,7 @@ public void paint(int reason) {
117117
if (widgetOffset >= 0 && redrawLength > 0) {
118118
widget.redrawRange(widgetOffset, redrawLength, true);
119119
}
120-
}
121-
catch (BadLocationException e) {}
120+
} catch (BadLocationException e) {}
122121
}
123122
}
124123

@@ -142,13 +141,13 @@ public void paintControl(PaintEvent event) {
142141
}
143142

144143
private void update() {
145-
lineAlpha = store.getInt(Settings.LINE_ALPHA);
146-
lineStyle = store.getInt(Settings.LINE_STYLE);
147-
lineWidth = store.getInt(Settings.LINE_WIDTH);
148-
lineShift = store.getInt(Settings.LINE_SHIFT);
149-
drawLeftEnd = store.getBoolean(Settings.DRAW_LEFT_END);
150-
drawBlankLine = store.getBoolean(Settings.DRAW_BLANK_LINE);
151-
skipCommentBlock = store.getBoolean(Settings.SKIP_COMMENT_BLOCK);
144+
lineAlpha = store.getInt(Pref.LINE_ALPHA);
145+
lineStyle = store.getInt(Pref.LINE_STYLE);
146+
lineWidth = store.getInt(Pref.LINE_WIDTH);
147+
lineShift = store.getInt(Pref.LINE_SHIFT);
148+
drawLeftEnd = store.getBoolean(Pref.DRAW_LEFT_EDGE);
149+
drawBlankLine = store.getBoolean(Pref.DRAW_BLANK_LINE);
150+
drawCommentBlock = store.getBoolean(Pref.DRAW_COMMENT_BLOCK);
152151
}
153152

154153
// Draw characters in view range.
@@ -195,7 +194,7 @@ private void drawLineRange(GC gc, int begLine, int endLine, int x, int w) {
195194
if (!isFoldedLine(content.getLineAtOffset(offset))) {
196195
String text = widget.getLine(line);
197196
int extend = 0;
198-
if (skipCommentBlock && assumeCommentBlock(text, tabWidth)) {
197+
if (!drawCommentBlock && assumeCommentBlock(text, tabWidth)) {
199198
extend -= tabWidth;
200199
}
201200
if (drawBlankLine && text.trim().length() == 0) {

net.certiv.tools.indentguide.plugin/src/net/certiv/tools/indentguide/Starter.java

+14-16
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@
4343

4444
import net.certiv.tools.indentguide.adaptors.PartAdaptor;
4545
import net.certiv.tools.indentguide.adaptors.WindowAdaptor;
46-
import net.certiv.tools.indentguide.preferences.Settings;
47-
import net.certiv.tools.indentguide.util.Prefs;
46+
import net.certiv.tools.indentguide.preferences.Pref;
4847
import net.certiv.tools.indentguide.util.Utils;
48+
import net.certiv.tools.indentguide.util.Utils.Delta;
4949

5050
public class Starter implements IStartup {
5151

@@ -58,7 +58,8 @@ public class Starter implements IStartup {
5858
private static final String SOURCE_VIEWER = "getSourceViewer"; // $NON-NLS-1$
5959

6060
private IPreferenceStore store;
61-
private Set<String> contentTypes;
61+
// excluded content types
62+
private Set<String> excludedTypeIds;
6263

6364
// row=window; col=page/editor; val=painter
6465
private HashMap<IWorkbenchPart, HashMap<ISourceViewer, IndentGuidePainter>> paintMap = new HashMap<>();
@@ -92,7 +93,7 @@ private void initWorkbenchWindow(IWorkbenchWindow window) {
9293
IWorkbenchPage page = window.getActivePage();
9394
if (page != null) {
9495
IWorkbenchPart part = page.getActivePart();
95-
Activator.log("workbench page '%s'", name(part));
96+
Activator.log("workbench page [%s]", name(part));
9697

9798
if (part instanceof MultiPageEditorPart) {
9899
IEditorPart editor = activeEditor((MultiPageEditorPart) part);
@@ -108,8 +109,8 @@ private void initWorkbenchWindow(IWorkbenchWindow window) {
108109
}
109110

110111
private void installPainter(IEditorPart part, IWorkbenchPart window) {
111-
if (!store.getBoolean(Settings.ENABLED)) return;
112-
Activator.log("inspecting editor '%s'", name(part));
112+
if (!store.getBoolean(Pref.ENABLED)) return;
113+
Activator.log("inspecting editor [%s]", name(part));
113114

114115
if (part instanceof AbstractTextEditor) {
115116
AbstractTextEditor editor = (AbstractTextEditor) part;
@@ -175,7 +176,7 @@ private boolean validType(AbstractTextEditor editor) {
175176
Activator.log("painter disallowed for '%s' [%s]", srcname, UNKNOWN);
176177
return false;
177178
}
178-
if (contentTypes.contains(type.getId())) {
179+
if (!excludedTypeIds.contains(type.getId())) {
179180
Activator.log("installing painter on '%s' [%s]", srcname, type.getName());
180181
return true;
181182
}
@@ -185,7 +186,7 @@ private boolean validType(AbstractTextEditor editor) {
185186
}
186187

187188
private void updateContentTypes() {
188-
contentTypes = Prefs.asLinkedSet(store.getString(Settings.CONTENT_TYPES));
189+
excludedTypeIds = Utils.undelimit(store.getString(Pref.CONTENT_TYPES));
189190
}
190191

191192
private String name(IWorkbenchPart part) {
@@ -249,19 +250,16 @@ private class StoreWatcher implements IPropertyChangeListener {
249250

250251
@Override
251252
public void propertyChange(PropertyChangeEvent evt) {
252-
if (evt.getProperty().startsWith(Settings.KEY)) {
253+
if (evt.getProperty().startsWith(Pref.KEY)) {
253254
String property = evt.getProperty();
254255
Object old = evt.getOldValue();
255256
Object now = evt.getNewValue();
256-
if (property.equals(Settings.CONTENT_TYPES)) {
257+
if (property.equals(Pref.CONTENT_TYPES)) {
257258
updateContentTypes();
258259

259-
Set<String> prev = Prefs.asLinkedSet((String) old);
260-
Set<String> pres = Prefs.asLinkedSet((String) now);
261-
Set<String> rmved = Utils.subtract(prev, pres);
262-
Set<String> added = Utils.subtract(pres, prev);
263-
if (!rmved.isEmpty()) Activator.log("property change '%s' removed %s", property, rmved);
264-
if (!added.isEmpty()) Activator.log("property change '%s' added %s", property, added);
260+
Delta<String> delta = Utils.delta(Utils.undelimit((String) old), Utils.undelimit((String) now));
261+
if (!delta.rmved.isEmpty()) Activator.log("property change '%s' removed %s", property, delta.rmved);
262+
if (!delta.added.isEmpty()) Activator.log("property change '%s' added %s", property, delta.added);
265263

266264
} else {
267265
Activator.log("property change '%s' [%s] => [%s]", property, old, now);

0 commit comments

Comments
 (0)