1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
6
using System.Windows.Forms;
8
using ICSharpCode.Core;
10
namespace ResourceEditor
12
public class ResourceEditorControl : UserControl, IOwnerState
14
ResourceList resourceList;
17
IResourceView currentView = null;
20
public enum ListViewViewState {
25
protected ListViewViewState internalState = ListViewViewState.Nothing;
27
public System.Enum InternalState {
33
public ResourceList ResourceList
40
public ResourceEditorControl()
42
InitializeComponent();
43
resourceList.SelectedIndexChanged += new EventHandler(resourceListSelectionChanged);
46
void resourceListSelectionChanged(object sender, EventArgs e)
48
if(resourceList.SelectedItems.Count == 0) {
49
internalState = ListViewViewState.Nothing;
52
internalState = ListViewViewState.ItemsSelected;
55
if(resourceList.SelectedItems.Count != 1) {
58
object key = resourceList.SelectedItems[0].Text;
59
ResourceItem item = (ResourceItem)resourceList.Resources[key.ToString()];
63
void InitializeComponent()
65
resourceList = new ResourceList(this);
66
resourceList.Dock = DockStyle.Top;
67
Controls.Add(resourceList);
70
panel.BackColor = SystemColors.Info;
71
panel.Dock = DockStyle.Fill;
73
splitter = new Splitter();
74
splitter.Dock = DockStyle.Top;
77
Controls.Add(splitter);
78
Controls.Add(resourceList);
80
this.Resize += new EventHandler(initializeLayout);
83
void initializeLayout(object sender, EventArgs e)
85
resourceList.Height = Convert.ToInt32(0.75 * Height);
88
void showView(Control viewer)
90
// remvoe old view if there is one
91
if(panel.Controls.Count == 1) {
92
Control control = panel.Controls[0];
93
panel.Controls.Remove(control);
98
viewer.Dock = DockStyle.Fill;
99
panel.Controls.Add(viewer);
100
currentView = (IResourceView)viewer;
101
currentView.WriteProtected = resourceList.WriteProtected;
102
currentView.ResourceChanged += new ResourceChangedEventHandler(viewResourceChanged);
106
void viewResourceChanged(object sender, ResourceEventArgs e)
108
resourceList.SetResourceValue(e.ResourceName, e.ResourceValue);
114
void showResource(ResourceItem item)
120
if (item.ResourceValue is Icon) {
121
IconView iv = new IconView(item);
123
} else if(item.ResourceValue is Bitmap) {
124
BitmapView bv = new BitmapView(item);
126
} else if(item.ResourceValue is Cursor) {
127
CursorView cv = new CursorView(item);
129
} else if(item.ResourceValue is string) {
130
TextView tv = new TextView(item);
132
} else if(item.ResourceValue is byte[]) {
133
BinaryView bv = new BinaryView(item);
135
} else if(item.ResourceValue is bool) {
136
BooleanView bv = new BooleanView(item);