View Javadoc

1   /*
2    *  XNap Commons
3    *
4    *  Copyright (C) 2005  Steffen Pingel
5    *
6    *  This library is free software; you can redistribute it and/or
7    *  modify it under the terms of the GNU Lesser General Public
8    *  License as published by the Free Software Foundation; either
9    *  version 2.1 of the License, or (at your option) any later version.
10   *
11   *  This library is distributed in the hope that it will be useful,
12   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14   *  Lesser General Public License for more details.
15   *
16   *  You should have received a copy of the GNU Lesser General Public
17   *  License along with this library; if not, write to the Free Software
18   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19   */
20  package org.xnap.commons.settings;
21  
22  import java.awt.Window;
23  import javax.swing.JSplitPane;
24  import org.xnap.commons.gui.table.TableLayout;
25  
26  /***
27   * The idea is to provide a store that can save and restore GUI settings
28   * that are only accessed on startup and shutdown of the application.
29   * 
30   * @author Steffen Pingel
31   */
32  public class SettingStore {
33  
34  	private SettingResource backStore;
35  
36  	public SettingStore(SettingResource backStore)
37  	{
38  		this.backStore = backStore;
39  	}
40  	
41  	public SettingResource getBackStore()
42  	{
43  		return backStore;
44  	}
45  	
46  	public void saveSplitPane(String key, JSplitPane splitPane)
47  	{
48  		new IntSetting(getBackStore(), key, 0).setValue(splitPane.getDividerLocation());
49  	}
50  	
51  	public void saveWindow(String key, Window window)
52  	{
53  		new WindowSettingDirector(getBackStore(), key).save(window);
54  	}
55  	
56  	public void saveTable(String key, TableLayout tableLayout)
57  	{
58  		new TableSettingDirector(getBackStore(), key).save(tableLayout);
59  	}
60  	
61  	public void restoreSplitPane(String key, int defaultDividerLocation, JSplitPane splitPane)
62  	{
63  		splitPane.setDividerLocation(new IntSetting(getBackStore(), key, defaultDividerLocation, 0).getValue());
64  	}
65  
66  	public void restoreWindow(String key, int defaultX, int defaultY, int defaultWidth, int defaultHeight, Window window)
67  	{
68  		new WindowSettingDirector(getBackStore(), key, defaultX, defaultY, defaultWidth, defaultHeight).restore(window);
69  	}
70  
71  	public void restoreTable(String key, String[] defaultColumns, TableLayout tableLayout)
72  	{
73  		new TableSettingDirector(backStore, key)
74  			.setDefaults(defaultColumns)
75  			.restore(tableLayout);
76  	}
77  	
78  }