/* * Copyright 2003-2011 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0 * * 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 jetbrains.mps.ide.findusages.view.treeholder.treeview; import jetbrains.mps.ide.findusages.IExternalizeable; import jetbrains.mps.project.Project; import org.jdom.Element; import java.util.Arrays; public class ViewOptions implements IExternalizeable { private static final String OPTIONS = "options"; private static final String CATEGORY_OPTION = "category_option"; private static final String MODULE_OPTION = "module_option"; private static final String MODEL_OPTION = "model_option"; private static final String ROOT_OPTION = "root_option"; private static final String PATH_OPTION = "path_option"; private static final String COUNT_OPTION = "count_option"; private static final String INFO_OPTION = "info_option"; private static final String SHOW_SEARCHED_NODES_OPTION = "view_searched_nodes_option"; private static final String GROUP_SEARCHED_NODES_OPTION = "group_searched_nodes_option"; private static final String AUTOSCROLL_OPTION = "autoscroll_option"; public boolean myAutoscrolls = false; @Deprecated public boolean myCategory = false; public boolean myModule = true, myModel = true, myRoot = true, myNamedPath = false; public boolean[] myCategories = new boolean[]{false}; public boolean myCount = true, myInfo = true, myShowSearchedNodes = true, myGroupSearchedNodes = true; public boolean myShowPopupMenu = true; public boolean mySearchedNodesButtonsVisible = true; public boolean myAdditionalInfoButtonVisible = true; public ViewOptions() { } public ViewOptions(boolean count, boolean info, boolean showSearchedNodes, boolean groupSearchedNodes, boolean searchedNodesButtonsVisible) { myCount = count; myInfo = info; myShowSearchedNodes = showSearchedNodes; myGroupSearchedNodes = groupSearchedNodes; mySearchedNodesButtonsVisible = searchedNodesButtonsVisible; } public ViewOptions(boolean count, boolean info, boolean showSearchedNodes, boolean groupSearchedNodes, boolean searchedNodesButtonsVisible, boolean additionalInfoButtonNeeded) { this(count, info, showSearchedNodes, groupSearchedNodes, searchedNodesButtonsVisible); myAdditionalInfoButtonVisible = additionalInfoButtonNeeded; } @Override public void read(Element element, Project project) { Element viewOptionsXML = element.getChild(OPTIONS); myCategory = Boolean.valueOf(viewOptionsXML.getAttributeValue(CATEGORY_OPTION)); myModule = Boolean.valueOf(viewOptionsXML.getAttributeValue(MODULE_OPTION)); myModel = Boolean.valueOf(viewOptionsXML.getAttributeValue(MODEL_OPTION)); myRoot = Boolean.valueOf(viewOptionsXML.getAttributeValue(ROOT_OPTION)); myNamedPath = Boolean.valueOf(viewOptionsXML.getAttributeValue(PATH_OPTION)); // TODO persistence for categories array myCount = Boolean.valueOf(viewOptionsXML.getAttributeValue(COUNT_OPTION)); myInfo = Boolean.valueOf(viewOptionsXML.getAttributeValue(INFO_OPTION)); myShowSearchedNodes = Boolean.valueOf(viewOptionsXML.getAttributeValue(SHOW_SEARCHED_NODES_OPTION)); myGroupSearchedNodes = Boolean.valueOf(viewOptionsXML.getAttributeValue(GROUP_SEARCHED_NODES_OPTION)); myAutoscrolls = Boolean.valueOf(viewOptionsXML.getAttributeValue(AUTOSCROLL_OPTION)); } @Override public void write(Element element, Project project) { Element viewOptionsXML = new Element(OPTIONS); viewOptionsXML.setAttribute(CATEGORY_OPTION, Boolean.toString(myCategory)); viewOptionsXML.setAttribute(MODULE_OPTION, Boolean.toString(myModule)); viewOptionsXML.setAttribute(MODEL_OPTION, Boolean.toString(myModel)); viewOptionsXML.setAttribute(ROOT_OPTION, Boolean.toString(myRoot)); viewOptionsXML.setAttribute(PATH_OPTION, Boolean.toString(myNamedPath)); // TODO persistence for categories array viewOptionsXML.setAttribute(COUNT_OPTION, Boolean.toString(myCount)); viewOptionsXML.setAttribute(INFO_OPTION, Boolean.toString(myInfo)); viewOptionsXML.setAttribute(SHOW_SEARCHED_NODES_OPTION, Boolean.toString(myShowSearchedNodes)); viewOptionsXML.setAttribute(GROUP_SEARCHED_NODES_OPTION, Boolean.toString(myGroupSearchedNodes)); viewOptionsXML.setAttribute(AUTOSCROLL_OPTION, Boolean.toString(myAutoscrolls)); element.addContent(viewOptionsXML); } synchronized public void setValues(ViewOptions options) { myAutoscrolls = options.myAutoscrolls; myCategory = options.myCategory; myModule = options.myModule; myModel = options.myModel; myRoot = options.myRoot; myNamedPath = options.myNamedPath; myCategories = Arrays.copyOf(options.myCategories, options.myCategories.length); myCount = options.myCount; myInfo = options.myInfo; myShowSearchedNodes = options.myShowSearchedNodes; myGroupSearchedNodes = options.myGroupSearchedNodes; myShowPopupMenu = options.myShowPopupMenu; mySearchedNodesButtonsVisible = options.mySearchedNodesButtonsVisible; myAdditionalInfoButtonVisible = options.myAdditionalInfoButtonVisible; } }