| /* |
| * Copyright (c) 2012, the Dart project authors. |
| * |
| * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except |
| * in compliance with the License. You may obtain a copy of the License at |
| * |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Unless required by applicable law or agreed to in writing, software distributed under the License |
| * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express |
| * or implied. See the License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package com.google.dart.tools.ui.themes; |
| |
| import com.google.dart.tools.ui.AbstractDartEditorTest; |
| import com.google.dart.tools.ui.DartUI; |
| import com.google.dart.tools.ui.PreferenceConstants; |
| import com.google.dart.tools.ui.theme.ColorTheme; |
| import com.google.dart.tools.ui.theme.ColorThemeManager; |
| |
| import org.eclipse.jface.preference.IPreferenceStore; |
| import org.eclipse.swt.graphics.Color; |
| import org.eclipse.swt.widgets.Display; |
| |
| import java.util.Collections; |
| import java.util.LinkedList; |
| import java.util.List; |
| import java.util.Set; |
| |
| public class ColorThemeTest extends AbstractDartEditorTest { |
| |
| public void testThemeChange() throws Exception { |
| // Creating the theme manager reads all theme files (22 at present), parses the xml, and |
| // initializes the object model. Then it reads all the mapping files, parses the xml, and |
| // initializes the object model for them, too. There are currently 7 mappings but some may |
| // be deleted. Basically, this test exercises most of the theme manager code. |
| ColorThemeManager colorThemeManager = new ColorThemeManager(); |
| IPreferenceStore store = PreferenceConstants.getPreferenceStore(); |
| PreferenceConstants.initializeDefaultValues(store); |
| |
| //openTestEditor(""); |
| fail("Open test editor"); |
| |
| IPreferenceStore prefs = testEditor.getPreferences(); |
| Display display = testEditor.getViewer().getTextWidget().getDisplay(); |
| Color ebg = DartUI.getEditorBackground(prefs, display); |
| Color efg = DartUI.getEditorForeground(prefs, display); |
| assertNull(ebg); |
| assertNull(efg); |
| List<String> themeNames = getThemeList(colorThemeManager); |
| assertNotNull(themeNames); |
| assertFalse(themeNames.isEmpty()); |
| String selectedThemeName = themeNames.get(4); |
| assertEquals("Havenjark", selectedThemeName); |
| store.setValue("colorTheme", selectedThemeName); |
| // change the world to match the new theme |
| colorThemeManager.applyTheme(selectedThemeName); |
| // verify that the open editor got updated with new colors |
| ebg = DartUI.getEditorBackground(prefs, display); |
| efg = DartUI.getEditorForeground(prefs, display); |
| assertNotNull(ebg); |
| assertNotNull(efg); |
| assertTrue(ebg.toString().indexOf("45, 54, 57") > 0); |
| assertTrue(efg.toString().indexOf("192, 182, 168") > 0); |
| } |
| |
| // Build the theme list as shown in the preference page. |
| private List<String> getThemeList(ColorThemeManager colorThemeManager) { |
| Set<ColorTheme> themes = colorThemeManager.getThemes(); |
| List<String> themeNames = new LinkedList<String>(); |
| for (ColorTheme theme : themes) { |
| themeNames.add(theme.getName()); |
| } |
| Collections.sort(themeNames, String.CASE_INSENSITIVE_ORDER); |
| themeNames.add(0, "Default"); |
| return themeNames; |
| } |
| } |