/*
* Copyright (c) 2015 the original author or authors.
* 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:
* Etienne Studer & Donát Csikós (Gradle Inc.) - initial API and implementation and initial documentation
*/
package org.eclipse.buildship.ui.view.task;
import org.osgi.service.prefs.BackingStoreException;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.buildship.core.util.preference.EclipsePreferencesUtils;
import org.eclipse.buildship.ui.UiPlugin;
import org.eclipse.buildship.ui.view.TreeViewerState;
/**
* Represents the (persistable) configuration state of the {@link TaskView}. Backed by the Eclipse
* Preferences API.
*/
public final class TaskViewState implements TreeViewerState {
private static final String PREF_PROJECT_TASKS_VISIBLE = "tasksView.projectTasksVisible";
private static final String PREF_TASK_SELECTORS_VISIBLE = "tasksView.taskSelectorsVisible";
private static final String PREF_PRIVATE_TASKS_VISIBLE = "tasksView.privateTasksVisible";
private static final String PREF_SORT_BY_TYPE = "tasksView.sortByType";
private static final String PREF_SORT_BY_VISIBILITY = "tasksView.sortByVisibility";
private static final String PREF_LINK_TO_SELECTION = "tasksView.linkToSelection";
private static final String PREF_SHOW_TREE_HEADER = "tasksView.showTreeHeader";
private static final String PREF_HEADER_NAME_COLUMN_WIDTH = "tasksView.headerNameColumnWidth";
private static final String PREF_HEADER_DESCRIPTION_COLUMN_WIDTH = "tasksView.headerDescriptionColumnWidth";
private static final String PREF_GROUP_TASKS = "tasksView.groupTasks";
private boolean projectTasksVisible;
private boolean taskSelectorsVisible;
private boolean privateTasksVisible;
private boolean sortByType;
private boolean sortByVisibility;
private boolean linkToSelection;
private boolean showTreeHeader;
private int headerNameColumnWidth;
private int headerDescriptionColumnWidth;
private boolean groupTasks;
public void load() {
IEclipsePreferences prefs = EclipsePreferencesUtils.getInstanceScope().getNode(UiPlugin.PLUGIN_ID);
this.projectTasksVisible = prefs.getBoolean(PREF_PROJECT_TASKS_VISIBLE, false);
this.taskSelectorsVisible = prefs.getBoolean(PREF_TASK_SELECTORS_VISIBLE, true);
this.privateTasksVisible = prefs.getBoolean(PREF_PRIVATE_TASKS_VISIBLE, false);
this.sortByType = prefs.getBoolean(PREF_SORT_BY_TYPE, true);
this.sortByVisibility = prefs.getBoolean(PREF_SORT_BY_VISIBILITY, true);
this.linkToSelection = prefs.getBoolean(PREF_LINK_TO_SELECTION, false);
this.showTreeHeader = prefs.getBoolean(PREF_SHOW_TREE_HEADER, false);
this.headerNameColumnWidth = prefs.getInt(PREF_HEADER_NAME_COLUMN_WIDTH, 200);
this.headerDescriptionColumnWidth = prefs.getInt(PREF_HEADER_DESCRIPTION_COLUMN_WIDTH, 400);
this.groupTasks = prefs.getBoolean(PREF_GROUP_TASKS, true);
}
public void save() {
IEclipsePreferences prefs = EclipsePreferencesUtils.getInstanceScope().getNode(UiPlugin.PLUGIN_ID);
prefs.putBoolean(PREF_PROJECT_TASKS_VISIBLE, this.projectTasksVisible);
prefs.putBoolean(PREF_TASK_SELECTORS_VISIBLE, this.taskSelectorsVisible);
prefs.putBoolean(PREF_PRIVATE_TASKS_VISIBLE, this.privateTasksVisible);
prefs.putBoolean(PREF_SORT_BY_TYPE, this.sortByType);
prefs.putBoolean(PREF_SORT_BY_VISIBILITY, this.sortByVisibility);
prefs.putBoolean(PREF_LINK_TO_SELECTION, this.linkToSelection);
prefs.putBoolean(PREF_SHOW_TREE_HEADER, this.showTreeHeader);
prefs.putInt(PREF_HEADER_NAME_COLUMN_WIDTH, this.headerNameColumnWidth);
prefs.putInt(PREF_HEADER_DESCRIPTION_COLUMN_WIDTH, this.headerDescriptionColumnWidth);
prefs.putBoolean(PREF_GROUP_TASKS, this.groupTasks);
try {
prefs.flush();
} catch (BackingStoreException e) {
UiPlugin.logger().error("Unable to store task view preferences.", e);
}
}
public boolean isProjectTasksVisible() {
return this.projectTasksVisible;
}
public void setProjectTasksVisible(boolean projectTasksVisible) {
this.projectTasksVisible = projectTasksVisible;
}
public boolean isTaskSelectorsVisible() {
return this.taskSelectorsVisible;
}
public void setTaskSelectorsVisible(boolean taskSelectorsVisible) {
this.taskSelectorsVisible = taskSelectorsVisible;
}
public boolean isPrivateTasksVisible() {
return this.privateTasksVisible;
}
public void setPrivateTasksVisible(boolean privateTasksVisible) {
this.privateTasksVisible = privateTasksVisible;
}
public boolean isSortByType() {
return this.sortByType;
}
public void setSortByType(boolean sortByType) {
this.sortByType = sortByType;
}
public boolean isSortByVisibility() {
return this.sortByVisibility;
}
public void setSortByVisibility(boolean sortByVisibility) {
this.sortByVisibility = sortByVisibility;
}
public boolean isLinkToSelection() {
return this.linkToSelection;
}
public void setLinkToSelection(boolean linkToSelection) {
this.linkToSelection = linkToSelection;
}
@Override
public boolean isShowTreeHeader() {
return this.showTreeHeader;
}
@Override
public void setShowTreeHeader(boolean showTreeHeader) {
this.showTreeHeader = showTreeHeader;
}
public int getHeaderNameColumnWidth() {
return this.headerNameColumnWidth;
}
public void setHeaderNameColumnWidth(int headerNameColumnWidth) {
this.headerNameColumnWidth = headerNameColumnWidth;
}
public int getHeaderDescriptionColumnWidth() {
return this.headerDescriptionColumnWidth;
}
public void setHeaderDescriptionColumnWidth(int headerDescriptionColumnWidth) {
this.headerDescriptionColumnWidth = headerDescriptionColumnWidth;
}
public boolean isGroupTasks() {
return this.groupTasks;
}
public void setGroupTasks(boolean groupTasksByTaskGroup) {
this.groupTasks = groupTasksByTaskGroup;
}
public void dispose() {
save();
}
}