/*******************************************************************************
* Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Exadel, Inc. and Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.common.model.ui.views.palette.editor;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.widgets.*;
import org.jboss.tools.common.model.XModel;
import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.common.model.options.PreferenceModelUtilities;
public class PaletteDialogState {
PaletteDialog dialog;
public PaletteDialogState(PaletteDialog dialog) {
this.dialog = dialog;
}
Rectangle bounds = null;
int[] ws = null;
Object[] es = new Object[0];
Object selected = null;
int v_scroll = -1;
public void saveState() {
bounds = dialog.getShell().getBounds();
es = dialog.treeViewer.getExpandedElements();
saveSelection();
v_scroll = dialog.treeViewer.getTree().getVerticalBar().getSelection();
ws = dialog.sash.getWeights();
}
public void loadState() {
if(bounds != null) {
dialog.getShell().setBounds(bounds.x, bounds.y, bounds.width, bounds.height);
} else {
Rectangle r = Display.getDefault().getClientArea();
int w = 620, h = 420, x = (r.width - w) / 2, y = (r.height - h) / 2;
dialog.getShell().setBounds(x, y, w, h);
}
loadSash();
loadExpansion();
loadSelection();
if(v_scroll > 0) dialog.treeViewer.getTree().getVerticalBar().setSelection(v_scroll);
}
void loadSash() {
if(ws == null || ws.length == 0) ws = new int[]{25, 50};
dialog.sash.setWeights(ws);
}
void loadExpansion() {
if(es == null || es.length < 2) {
XModel model = PreferenceModelUtilities.getPreferenceModel();
es = new Object[2];
es[0] = model.getByPath("XStudio"); //$NON-NLS-1$
es[1] = model.getByPath("XStudio/Palette"); //$NON-NLS-1$
}
dialog.treeViewer.setExpandedElements(es);
}
void saveSelection() {
selected = null;
ISelection s = dialog.treeViewer.getSelection();
if(s.isEmpty()) return;
StructuredSelection ss = (StructuredSelection)s;
selected = ss.getFirstElement();
}
void loadSelection() {
if(selected == null) selected = PreferenceModelUtilities.getPreferenceModel().getByPath("XStudio/Palette"); //$NON-NLS-1$
dialog.treeViewer.setSelection(new StructuredSelection(selected), true);
dialog.objectEditor.setModelObject((XModelObject)selected);
}
}