| /******************************************************************************* |
| * Copyright (c) 2017 Exyte |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Yuri Strot - initial API and Implementation |
| *******************************************************************************/ |
| package org.eclipse.ui.glance.internal.preferences; |
| |
| import org.eclipse.jface.preference.BooleanFieldEditor; |
| import org.eclipse.jface.preference.ColorFieldEditor; |
| import org.eclipse.jface.preference.FieldEditorPreferencePage; |
| import org.eclipse.jface.preference.IPreferenceStore; |
| import org.eclipse.jface.preference.IntegerFieldEditor; |
| import org.eclipse.swt.SWT; |
| 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.Group; |
| import org.eclipse.ui.IWorkbench; |
| import org.eclipse.ui.IWorkbenchPreferencePage; |
| import org.eclipse.ui.IWorkbenchWindow; |
| import org.eclipse.ui.PlatformUI; |
| |
| import org.eclipse.ui.glance.internal.GlancePlugin; |
| import org.eclipse.ui.glance.internal.search.SearchManager; |
| import org.eclipse.ui.glance.sources.ColorManager; |
| |
| /** |
| * @author Yuri Strot |
| * |
| */ |
| public class GlancePreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage, |
| IPreferenceConstants { |
| |
| private Button currentWindow; |
| |
| public GlancePreferencePage() { |
| super(GRID); |
| } |
| |
| public void init(final IWorkbench workbench) { |
| } |
| |
| @Override |
| protected IPreferenceStore doGetPreferenceStore() { |
| return GlancePlugin.getDefault().getPreferenceStore(); |
| } |
| |
| @Override |
| protected void createFieldEditors() { |
| createSearchSettings(getFieldEditorParent()); |
| createColorSettings(getFieldEditorParent()); |
| createPanelSettings(getFieldEditorParent()); |
| } |
| |
| /** |
| * Adjust the layout of the field editors so that they are properly aligned. |
| */ |
| @Override |
| protected void adjustGridLayout() { |
| super.adjustGridLayout(); |
| ((GridLayout) getFieldEditorParent().getLayout()).numColumns = 1; |
| } |
| |
| private Group createPanelSettings(final Composite parent) { |
| final Group group = new Group(parent, SWT.NONE); |
| group.setText("Panel"); |
| group.setLayout(new GridLayout(1, false)); |
| group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); |
| |
| final Composite composite = new Composite(group, SWT.NONE); |
| composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); |
| |
| createCurrentWindowOption(composite); |
| addField(new BooleanFieldEditor(PANEL_STARTUP, "Show at startup", composite)); |
| addField(new BooleanFieldEditor(PANEL_STATUS_LINE, "Show panel in status line when possible", composite)); |
| addField(new BooleanFieldEditor(PANEL_DIRECTIONS, "Show direction buttons", composite)); |
| addField(new BooleanFieldEditor(PANEL_CLOSE, "Show close button", composite)); |
| addField(new BooleanFieldEditor(PANEL_AUTO_INDEXING, "Enable auto indexing", composite)); |
| addField(new BooleanFieldEditor(SEARCH_INCREMENTAL, "Enable incremental search", composite)); |
| final IntegerFieldEditor maxIndexingDepthEditor = new IntegerFieldEditor(PANEL_MAX_INDEXING_DEPTH, |
| "Max indexing depth for trees:", composite); |
| maxIndexingDepthEditor.setValidRange(1, Integer.MAX_VALUE); |
| addField(maxIndexingDepthEditor); |
| addField(new IntegerFieldEditor(PANEL_TEXT_SIZE, "Default box width in chars:", composite)); |
| |
| return group; |
| } |
| |
| private void createCurrentWindowOption(final Composite composite) { |
| currentWindow = new Button(composite, SWT.CHECK); |
| currentWindow.setText("Show in the current window"); |
| initCurrentWindow(); |
| } |
| |
| @Override |
| protected void performDefaults() { |
| super.performDefaults(); |
| initCurrentWindow(); |
| } |
| |
| private void initCurrentWindow() { |
| final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); |
| if (window == null) { |
| currentWindow.setEnabled(false); |
| } else { |
| final boolean inWindow = SearchManager.getIntance().isInWindow(window); |
| currentWindow.setSelection(inWindow); |
| } |
| } |
| |
| @Override |
| public boolean performOk() { |
| final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); |
| if (window != null) { |
| final boolean inWindow = SearchManager.getIntance().isInWindow(window); |
| final boolean open = currentWindow.getSelection(); |
| if (open != inWindow) { |
| SearchManager.getIntance().setStatusLine(window, open); |
| } |
| } |
| return super.performOk(); |
| } |
| |
| private Group createSearchSettings(final Composite parent) { |
| final Group group = new Group(parent, SWT.NONE); |
| group.setText("Search"); |
| group.setLayout(new GridLayout(1, false)); |
| group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); |
| |
| final Composite composite = new Composite(group, SWT.NONE); |
| composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); |
| |
| addField(new BooleanFieldEditor(SEARCH_CASE_SENSITIVE, LABEL_CASE_SENSITIVE, composite)); |
| addField(new BooleanFieldEditor(SEARCH_CAMEL_CASE, LABEL_CAMEL_CASE, composite)); |
| addField(new BooleanFieldEditor(SEARCH_WORD_PREFIX, LABEL_WORD_PREFIX, composite)); |
| addField(new BooleanFieldEditor(SEARCH_REGEXP, LABEL_REGEXP, composite)); |
| |
| return group; |
| } |
| |
| private Group createColorSettings(final Composite parent) { |
| final Group group = new Group(parent, SWT.NONE); |
| group.setText("Colors"); |
| group.setLayout(new GridLayout(1, false)); |
| group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); |
| |
| final Composite composite = new Composite(group, SWT.NONE); |
| composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); |
| |
| addField(new ColorEditor(composite, "Highlight:", COLOR_HIGHLIGHT)); |
| addField(new ColorEditor(composite, "Selection:", COLOR_SELECTION)); |
| |
| return group; |
| } |
| |
| private static class ColorEditor extends ColorFieldEditor { |
| |
| public ColorEditor(final Composite parent, final String text, final String prefKey) { |
| this(parent, text, prefKey, ColorManager.getStore()); |
| } |
| |
| public ColorEditor(final Composite parent, final String text, final String prefKey, IPreferenceStore store) { |
| super(prefKey, text, parent); |
| super.setPreferenceStore(store); |
| } |
| |
| @Override |
| public void setPreferenceStore(final IPreferenceStore store) { |
| } |
| } |
| |
| } |