/*
Copyright (C) 2011 monte
This file is part of PSP NetParty.
PSP NetParty is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package pspnetparty.client.swt.config;
import java.util.ArrayList;
import org.eclipse.jface.preference.ColorSelector;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.FontDialog;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Spinner;
import org.eclipse.swt.widgets.Text;
import pspnetparty.client.swt.PlayClient;
import pspnetparty.client.swt.SwtUtils;
import pspnetparty.client.swt.PlayClient.ColorType;
import pspnetparty.client.swt.PlayClient.FontType;
public class AppearancePage extends PreferencePage {
public static final String PAGE_ID = "appearance";
private PlayClient application;
private IniAppearance iniAppearance;
private FontData fontGlobal;
private FontData fontLog;
private FontData fontChat;
private Text sampleFontGlobal;
private Text sampleFontLog;
private Text sampleFontChat;
private RGB colorBackground;
private RGB colorForeground;
private RGB colorLogBackground;
private RGB colorLogInfo;
private RGB colorLogError;
private RGB colorLogServer;
private RGB colorLogRoom;
private RGB colorChatMine;
private RGB colorChatOthers;
private RGB colorChatPrivate;
private ColorSelector selectorColorBackground;
private ColorSelector selectorColorForeground;
private ColorSelector selectorColorLogBackground;
private ColorSelector selectorColorLogInfo;
private ColorSelector selectorColorLogError;
private ColorSelector selectorColorLogServer;
private ColorSelector selectorColorLogRoom;
private ColorSelector selectorColorChatMine;
private ColorSelector selectorColorChatOthers;
private ColorSelector selectorColorChatPrivate;
private RGB colorTimestampRulerBG;
private RGB colorTimestampRulerFG;
private Integer timestampRulerWidth;
private RGB colorNameRulerBG;
private RGB colorNameRulerFG;
private Integer nameRulerWidth;
private ColorSelector selectorColorTimestampRulerBG;
private ColorSelector selectorColorTimestampRulerFG;
private Spinner spinnerTimestampRulerWidth;
private ColorSelector selectorColorNameRulerBG;
private ColorSelector selectorColorNameRulerFG;
private Spinner spinnerNameRulerWidth;
public AppearancePage(PlayClient application) {
super("フォントと色");
this.application = application;
iniAppearance = application.getAppearance();
// noDefaultAndApplyButton();
}
@Override
protected Control createContents(Composite parent) {
GridLayout gridLayout;
GridData gridData;
FontData fontData;
Color bgColor = parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND);
Composite container = new Composite(parent, SWT.NONE);
gridLayout = new GridLayout(1, false);
gridLayout.horizontalSpacing = 0;
gridLayout.verticalSpacing = 6;
gridLayout.marginWidth = 0;
gridLayout.marginHeight = 0;
gridLayout.marginTop = 2;
container.setLayout(gridLayout);
Group groupFont = new Group(container, SWT.SHADOW_IN);
groupFont.setText("フォント");
gridLayout = new GridLayout(3, false);
gridLayout.horizontalSpacing = 8;
gridLayout.verticalSpacing = 5;
gridLayout.marginWidth = 4;
gridLayout.marginHeight = 0;
gridLayout.marginBottom = 5;
groupFont.setLayout(gridLayout);
groupFont.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, true, false));
Label labelFontGlobal = new Label(groupFont, SWT.NONE);
labelFontGlobal.setText("全体:");
labelFontGlobal.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
sampleFontGlobal = new Text(groupFont, SWT.BORDER | SWT.READ_ONLY);
sampleFontGlobal.setBackground(bgColor);
sampleFontGlobal.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
fontData = iniAppearance.getFontGlobal().getFontData()[0];
sampleFontGlobal.setText(fontToString(fontData));
Button buttonFontGlobal = new Button(groupFont, SWT.PUSH);
buttonFontGlobal.setText("選択");
buttonFontGlobal.setLayoutData(new GridData(convertWidthInCharsToPixels(12), SWT.DEFAULT));
buttonFontGlobal.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
FontDialog dialog = new FontDialog(getShell());
dialog.setFontList(iniAppearance.getFontGlobal().getFontData());
fontGlobal = dialog.open();
if (fontGlobal != null) {
sampleFontGlobal.setText(fontToString(fontGlobal));
}
}
});
Label labelFontLog = new Label(groupFont, SWT.NONE);
labelFontLog.setText("ログ:");
labelFontLog.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
sampleFontLog = new Text(groupFont, SWT.BORDER | SWT.READ_ONLY);
sampleFontLog.setBackground(bgColor);
sampleFontLog.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
fontData = iniAppearance.getFontLog().getFontData()[0];
sampleFontLog.setText(fontToString(fontData));
Button buttonFontLog = new Button(groupFont, SWT.PUSH);
buttonFontLog.setText("選択");
buttonFontLog.setLayoutData(new GridData(convertWidthInCharsToPixels(12), SWT.DEFAULT));
buttonFontLog.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
FontDialog dialog = new FontDialog(getShell());
dialog.setFontList(iniAppearance.getFontLog().getFontData());
fontLog = dialog.open();
if (fontLog != null) {
sampleFontLog.setText(fontToString(fontLog));
}
}
});
Label labelFontChat = new Label(groupFont, SWT.NONE);
labelFontChat.setText("チャット入力:");
labelFontChat.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
sampleFontChat = new Text(groupFont, SWT.BORDER | SWT.READ_ONLY);
sampleFontChat.setBackground(bgColor);
sampleFontChat.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
fontData = iniAppearance.getFontChat().getFontData()[0];
sampleFontChat.setText(fontToString(fontData));
Button buttonFontChat = new Button(groupFont, SWT.PUSH);
buttonFontChat.setText("選択");
buttonFontChat.setLayoutData(new GridData(convertWidthInCharsToPixels(12), SWT.DEFAULT));
buttonFontChat.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
FontDialog dialog = new FontDialog(getShell());
dialog.setFontList(iniAppearance.getFontChat().getFontData());
fontChat = dialog.open();
if (fontChat != null) {
sampleFontChat.setText(fontToString(fontChat));
}
}
});
Group groupColorGlobal = new Group(container, SWT.SHADOW_IN);
groupColorGlobal.setText("全体的な色");
groupColorGlobal.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, false, false));
gridLayout = new GridLayout(6, false);
gridLayout.horizontalSpacing = 5;
gridLayout.verticalSpacing = 8;
gridLayout.marginWidth = 4;
gridLayout.marginHeight = 5;
groupColorGlobal.setLayout(gridLayout);
new Label(groupColorGlobal, SWT.NONE).setText("背景");
selectorColorBackground = new ColorSelector(groupColorGlobal);
selectorColorBackground.setColorValue(iniAppearance.getColorBackground().getRGB());
selectorColorBackground.addListener(new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
colorBackground = (RGB) event.getNewValue();
}
});
new Label(groupColorGlobal, SWT.NONE).setText("文字");
selectorColorForeground = new ColorSelector(groupColorGlobal);
selectorColorForeground.setColorValue(iniAppearance.getColorForeground().getRGB());
selectorColorForeground.addListener(new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
colorForeground = (RGB) event.getNewValue();
}
});
new Label(groupColorGlobal, SWT.NONE).setText("ログ背景");
selectorColorLogBackground = new ColorSelector(groupColorGlobal);
selectorColorLogBackground.setColorValue(iniAppearance.getColorLogBackground().getRGB());
selectorColorLogBackground.addListener(new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
colorLogBackground = (RGB) event.getNewValue();
}
});
Group groupColorLog = new Group(container, SWT.SHADOW_IN);
groupColorLog.setText("ログの色");
groupColorLog.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, false, false));
gridLayout = new GridLayout(8, false);
gridLayout.horizontalSpacing = 5;
gridLayout.verticalSpacing = 8;
gridLayout.marginWidth = 4;
gridLayout.marginHeight = 5;
groupColorLog.setLayout(gridLayout);
new Label(groupColorLog, SWT.NONE).setText("情報");
selectorColorLogInfo = new ColorSelector(groupColorLog);
selectorColorLogInfo.setColorValue(iniAppearance.getColorLogInfo().getRGB());
selectorColorLogInfo.addListener(new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
colorLogInfo = (RGB) event.getNewValue();
}
});
new Label(groupColorLog, SWT.NONE).setText("エラー");
selectorColorLogError = new ColorSelector(groupColorLog);
selectorColorLogError.setColorValue(iniAppearance.getColorLogError().getRGB());
selectorColorLogError.addListener(new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
colorLogError = (RGB) event.getNewValue();
}
});
new Label(groupColorLog, SWT.NONE).setText("サーバー");
selectorColorLogServer = new ColorSelector(groupColorLog);
selectorColorLogServer.setColorValue(iniAppearance.getColorLogServer().getRGB());
selectorColorLogServer.addListener(new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
colorLogServer = (RGB) event.getNewValue();
}
});
new Label(groupColorLog, SWT.NONE).setText("ルーム");
selectorColorLogRoom = new ColorSelector(groupColorLog);
selectorColorLogRoom.setColorValue(iniAppearance.getColorLogRoom().getRGB());
selectorColorLogRoom.addListener(new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
colorLogRoom = (RGB) event.getNewValue();
}
});
Group groupColorChat = new Group(container, SWT.SHADOW_IN);
groupColorChat.setText("チャットログの色");
groupColorChat.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, false, false));
gridLayout = new GridLayout(6, false);
gridLayout.horizontalSpacing = 5;
gridLayout.verticalSpacing = 8;
gridLayout.marginWidth = 4;
gridLayout.marginHeight = 5;
groupColorChat.setLayout(gridLayout);
new Label(groupColorChat, SWT.NONE).setText("自分");
selectorColorChatMine = new ColorSelector(groupColorChat);
selectorColorChatMine.setColorValue(iniAppearance.getColorChatMine().getRGB());
selectorColorChatMine.addListener(new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
colorChatMine = (RGB) event.getNewValue();
}
});
new Label(groupColorChat, SWT.NONE).setText("他の人");
selectorColorChatOthers = new ColorSelector(groupColorChat);
selectorColorChatOthers.setColorValue(iniAppearance.getColorChatOthers().getRGB());
selectorColorChatOthers.addListener(new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
colorChatOthers = (RGB) event.getNewValue();
}
});
new Label(groupColorChat, SWT.NONE).setText("プライベート");
selectorColorChatPrivate = new ColorSelector(groupColorChat);
selectorColorChatPrivate.setColorValue(iniAppearance.getColorChatPrivate().getRGB());
selectorColorChatPrivate.addListener(new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
colorChatPrivate = (RGB) event.getNewValue();
}
});
Group groupLogRuler = new Group(container, SWT.SHADOW_IN);
groupLogRuler.setText("ログルーラー");
groupLogRuler.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, false, false));
gridLayout = new GridLayout(8, false);
gridLayout.horizontalSpacing = 5;
gridLayout.verticalSpacing = 8;
gridLayout.marginWidth = 4;
gridLayout.marginHeight = 5;
groupLogRuler.setLayout(gridLayout);
new Label(groupLogRuler, SWT.NONE).setText("タイムスタンプ:");
Label labelTimestampRulerBG = new Label(groupLogRuler, SWT.NONE);
labelTimestampRulerBG.setText("背景");
labelTimestampRulerBG.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
selectorColorTimestampRulerBG = new ColorSelector(groupLogRuler);
selectorColorTimestampRulerBG.setColorValue(iniAppearance.getColorLogTimestampRulerBG().getRGB());
selectorColorTimestampRulerBG.addListener(new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
colorTimestampRulerBG = (RGB) event.getNewValue();
}
});
new Label(groupLogRuler, SWT.NONE).setText("文字");
selectorColorTimestampRulerFG = new ColorSelector(groupLogRuler);
selectorColorTimestampRulerFG.setColorValue(iniAppearance.getColorLogTimestampRulerFG().getRGB());
selectorColorTimestampRulerFG.addListener(new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
colorTimestampRulerFG = (RGB) event.getNewValue();
}
});
Label labelTimeStampRulerWidth = new Label(groupLogRuler, SWT.NONE);
labelTimeStampRulerWidth.setText("幅");
gridData = new GridData();
gridData.horizontalIndent = 10;
labelTimeStampRulerWidth.setLayoutData(gridData);
spinnerTimestampRulerWidth = new Spinner(groupLogRuler, SWT.BORDER);
spinnerTimestampRulerWidth.setMinimum(0);
spinnerTimestampRulerWidth.setSelection(iniAppearance.getLogTimestampRulerWidth());
spinnerTimestampRulerWidth.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
timestampRulerWidth = spinnerTimestampRulerWidth.getSelection();
}
});
new Label(groupLogRuler, SWT.NONE).setText("ピクセル");
new Label(groupLogRuler, SWT.NONE).setText("名前:");
Label labelNameRulerBG = new Label(groupLogRuler, SWT.NONE);
labelNameRulerBG.setText("背景");
labelNameRulerBG.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
selectorColorNameRulerBG = new ColorSelector(groupLogRuler);
selectorColorNameRulerBG.setColorValue(iniAppearance.getColorLogNameRulerBG().getRGB());
selectorColorNameRulerBG.addListener(new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
colorNameRulerBG = (RGB) event.getNewValue();
}
});
new Label(groupLogRuler, SWT.NONE).setText("文字");
selectorColorNameRulerFG = new ColorSelector(groupLogRuler);
selectorColorNameRulerFG.setColorValue(iniAppearance.getColorLogNameRulerFG().getRGB());
selectorColorNameRulerFG.addListener(new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
colorNameRulerFG = (RGB) event.getNewValue();
}
});
Label labelNameRulerWidth = new Label(groupLogRuler, SWT.NONE);
labelNameRulerWidth.setText("幅");
gridData = new GridData();
gridData.horizontalIndent = 10;
labelNameRulerWidth.setLayoutData(gridData);
spinnerNameRulerWidth = new Spinner(groupLogRuler, SWT.BORDER);
spinnerNameRulerWidth.setMinimum(0);
spinnerNameRulerWidth.setSelection(iniAppearance.getLogNameRulerWidth());
spinnerNameRulerWidth.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
nameRulerWidth = spinnerNameRulerWidth.getSelection();
}
});
new Label(groupLogRuler, SWT.NONE).setText("ピクセル");
return container;
}
@Override
public void createControl(Composite parent) {
super.createControl(parent);
getApplyButton().setText("適用する");
getDefaultsButton().setText("デフォルトに戻す");
}
private static String fontToString(FontData data) {
StringBuilder sb = new StringBuilder();
sb.append(data.getName());
sb.append(",");
sb.append(data.getHeight());
sb.append(",");
switch (data.getStyle()) {
case SWT.NORMAL:
sb.append("Normal");
break;
case SWT.BOLD:
sb.append("Bold");
break;
case SWT.ITALIC:
sb.append("Italic");
break;
case SWT.BOLD | SWT.ITALIC:
sb.append("Bold Italic");
break;
}
return sb.toString();
}
@Override
protected void performDefaults() {
Display display = getShell().getDisplay();
Font systemFomt = display.getSystemFont();
FontData systemFont = systemFomt.getFontData()[0];
fontGlobal = systemFont;
fontLog = systemFont;
fontChat = new FontData(systemFont.getName(), systemFont.getHeight() + 4, systemFont.getStyle());
sampleFontGlobal.setText(fontToString(fontGlobal));
sampleFontLog.setText(fontToString(fontLog));
sampleFontChat.setText(fontToString(fontChat));
colorBackground = IniAppearance.DEFAULT_COLOR_BACKGROUND;
colorForeground = IniAppearance.DEFAULT_COLOR_FOREGROUND;
colorLogBackground = IniAppearance.DEFAULT_COLOR_LOG_BACKGROUND;
selectorColorBackground.setColorValue(colorBackground);
selectorColorForeground.setColorValue(colorForeground);
selectorColorLogBackground.setColorValue(colorLogBackground);
colorLogInfo = IniAppearance.DEFAULT_COLOR_LOG_INFO;
colorLogError = IniAppearance.DEFAULT_COLOR_LOG_ERROR;
colorLogServer = IniAppearance.DEFAULT_COLOR_LOG_SERVER;
colorLogRoom = IniAppearance.DEFAULT_COLOR_LOG_ROOM;
colorChatMine = IniAppearance.DEFAULT_COLOR_CHAT_MINE;
colorChatOthers = IniAppearance.DEFAULT_COLOR_CHAT_OTHERS;
colorChatPrivate = IniAppearance.DEFAULT_COLOR_CHAT_PRIVATE;
selectorColorLogInfo.setColorValue(colorLogInfo);
selectorColorLogError.setColorValue(colorLogError);
selectorColorLogServer.setColorValue(colorLogServer);
selectorColorLogRoom.setColorValue(colorLogRoom);
selectorColorChatMine.setColorValue(colorChatMine);
selectorColorChatOthers.setColorValue(colorChatOthers);
selectorColorChatPrivate.setColorValue(colorChatPrivate);
colorTimestampRulerBG = IniAppearance.DEFAULT_COLOR_LOG_TIMESTAMP_RULER_BG;
colorTimestampRulerFG = IniAppearance.DEFAULT_COLOR_LOG_TIMESTAMP_RULER_FG;
timestampRulerWidth = IniAppearance.DEFAULT_TIMESTAMP_RULER_WIDTH;
colorNameRulerBG = IniAppearance.DEFAULT_COLOR_LOG_NAME_RULER_BG;
colorNameRulerFG = IniAppearance.DEFAULT_COLOR_LOG_NAME_RULER_FG;
nameRulerWidth = IniAppearance.DEFAULT_NAME_RULER_WIDTH;
selectorColorTimestampRulerBG.setColorValue(colorTimestampRulerBG);
selectorColorTimestampRulerFG.setColorValue(colorTimestampRulerFG);
spinnerTimestampRulerWidth.setSelection(timestampRulerWidth);
selectorColorNameRulerBG.setColorValue(colorNameRulerBG);
selectorColorNameRulerFG.setColorValue(colorNameRulerFG);
spinnerNameRulerWidth.setSelection(nameRulerWidth);
}
@Override
protected void performApply() {
reflectValues();
}
@Override
public boolean performOk() {
reflectValues();
return super.performOk();
}
private void reflectValues() {
if (!isControlCreated())
return;
boolean sizeChanged = false;
if (fontGlobal != null) {
application.applyFont(FontType.GLOBAL, fontGlobal);
sizeChanged = true;
}
if (fontLog != null) {
application.applyFont(FontType.LOG, fontLog);
sizeChanged = true;
}
if (fontChat != null) {
application.applyFont(FontType.CHAT, fontChat);
sizeChanged = true;
}
if (colorBackground != null) {
application.applyColor(ColorType.BACKGROUND, colorBackground);
}
if (colorForeground != null) {
application.applyColor(ColorType.FOREGROUND, colorForeground);
}
if (colorLogBackground != null) {
application.applyColor(ColorType.LOG_BACKGROUND, colorLogBackground);
}
ArrayList<Color> removedColors = new ArrayList<Color>();
if (colorLogInfo != null) {
removedColors.add(iniAppearance.getColorLogInfo());
iniAppearance.setColorLogInfo(new Color(SwtUtils.DISPLAY, colorLogInfo));
}
if (colorLogError != null) {
removedColors.add(iniAppearance.getColorLogError());
iniAppearance.setColorLogError(new Color(SwtUtils.DISPLAY, colorLogError));
}
if (colorLogServer != null) {
removedColors.add(iniAppearance.getColorLogServer());
iniAppearance.setColorLogServer(new Color(SwtUtils.DISPLAY, colorLogServer));
}
if (colorLogRoom != null) {
removedColors.add(iniAppearance.getColorLogRoom());
iniAppearance.setColorLogRoom(new Color(SwtUtils.DISPLAY, colorLogRoom));
}
if (colorChatMine != null) {
removedColors.add(iniAppearance.getColorChatMine());
iniAppearance.setColorChatMine(new Color(SwtUtils.DISPLAY, colorChatMine));
}
if (colorChatOthers != null) {
removedColors.add(iniAppearance.getColorChatOthers());
iniAppearance.setColorChatOthers(new Color(SwtUtils.DISPLAY, colorChatOthers));
}
if (colorChatPrivate != null) {
removedColors.add(iniAppearance.getColorChatPrivate());
iniAppearance.setColorChatPrivate(new Color(SwtUtils.DISPLAY, colorChatPrivate));
}
if (colorTimestampRulerBG != null) {
removedColors.add(iniAppearance.getColorLogTimestampRulerBG());
iniAppearance.setColorLogTimestampRulerBG(new Color(SwtUtils.DISPLAY, colorTimestampRulerBG));
}
if (colorTimestampRulerFG != null) {
removedColors.add(iniAppearance.getColorLogTimestampRulerFG());
iniAppearance.setColorLogTimestampRulerFG(new Color(SwtUtils.DISPLAY, colorTimestampRulerFG));
}
if (timestampRulerWidth != null) {
iniAppearance.setLogTimestampRulerWidth(timestampRulerWidth);
sizeChanged = true;
}
if (colorNameRulerBG != null) {
removedColors.add(iniAppearance.getColorLogNameRulerBG());
iniAppearance.setColorLogNameRulerBG(new Color(SwtUtils.DISPLAY, colorNameRulerBG));
}
if (colorNameRulerFG != null) {
removedColors.add(iniAppearance.getColorLogNameRulerFG());
iniAppearance.setColorLogNameRulerFG(new Color(SwtUtils.DISPLAY, colorNameRulerFG));
}
if (nameRulerWidth != null) {
iniAppearance.setLogNameRulerWidth(nameRulerWidth);
sizeChanged = true;
}
if (sizeChanged || !removedColors.isEmpty())
application.reflectAppearance();
for (Color c : removedColors) {
c.dispose();
}
}
}