public void Add(IDockablePanel control, Size suggestedSize, PeekSide side) { StackPanel panel = panels[side]; var button = new PeekButton { Text = control.Title.Short, Icon = control.Icon, Orientation = side == PeekSide.Left || side == PeekSide.Right ? Orientation.Vertical : Orientation.Horizontal }; peekablePanels.Add(button, new PeekablePanel(control, side, suggestedSize)); button.Click += Button_Click; panel.Children.Add(button); }
public void Restore(DockState state, IDockablePanelFactory factory) { foreach (TabState tabState in state.tabStates) { Type t = Type.GetType(tabState.ClassName); IDockablePanel control = factory.MakePanel(t); if (control is IStateControl) { using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(tabState.ControlState))) (control as IStateControl).RestoreState(stream); } var tab = new EditorTab(control); Items.Add(tab); } }
private void titleBar_WindowAction(object sender, WindowActionEventArgs args) { if (!args.ActionHandled) { if (args.DockableControls == null) { var controls = new IDockablePanel[tabControl.Items.Count]; for (int i = 0; i < tabControl.Items.Count; i++) { var tab = tabControl.Items[i] as EditorTab; var panel = tab.Content as EditorPanel; controls[i] = panel.Content as IDockablePanel; } args.DockableControls = new DockableGroup(controls, new Size(tabControl.ActualWidth, tabControl.ActualHeight)); undockAll(); } else { undock(args.DockableControls.Panels); } args.ActionHandled = true; } }
private void openPanel(object sender, IDockablePanel panel) { if (workspacePanel.ShowChild(panel.Control)) { return; } if (mostRecentDocumentTabControl != null && panel is IDocumentPanel) { var item = new EditorTab(panel); mostRecentDocumentTabControl.Items.Add(item); mostRecentDocumentTabControl.SelectedItem = item; } else if (mostRecentToolTabControl != null && panel is IToolPanel) { var item = new EditorTab(panel); mostRecentToolTabControl.Items.Add(item); mostRecentToolTabControl.SelectedItem = item; } else { new EditorWindow(workspacePanel, panel).Show(); } }
public DockableGroup(EditorPanel panel) { Panels = new IDockablePanel[] { panel.Content as IDockablePanel }; SuggestedSize = new Size(panel.ActualWidth, panel.ActualHeight); }
public DockableGroup(IDockablePanel panel, Size?suggestedSize = null) : this(new IDockablePanel[] { panel }, suggestedSize) { }
public EditorTab(IDockablePanel control) { Style = FindResource("Workspace.TabItem") as Style; Content = new EditorPanel(control); Header = control.Title?.Short ?? ""; }
public EditorWindow(WorkspacePanel workspacePanel, IDockablePanel control) : this(workspacePanel, new DockableGroup(control)) { }
public PeekablePanel(IDockablePanel control, PeekSide side, Size suggestedSize) { DockableControl = control; Side = side; Size = suggestedSize; }