Browse Source

SD-1685 first part - Single selection

pull/289/head
Patryk Mikos 12 years ago
parent
commit
4ae59b5f8b
  1. 6
      data/resources/StringResources.resx
  2. 21
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
  3. 13
      src/Main/Base/Project/Src/Services/StatusBar/StatusBarService.cs
  4. 10
      src/Main/SharpDevelop/Workbench/SDStatusBar.cs
  5. 24
      src/Main/SharpDevelop/Workbench/StatusBarService.cs

6
data/resources/StringResources.resx

@ -6938,6 +6938,12 @@ The resources files have been renamed/moved accordingly.</value>
<data name="StatusBarService.CursorStatusBarPanelText" xml:space="preserve"> <data name="StatusBarService.CursorStatusBarPanelText" xml:space="preserve">
<value>ln ${Line} col ${Column} ch ${Character}</value> <value>ln ${Line} col ${Column} ch ${Character}</value>
</data> </data>
<data name="StatusBarService.SelectionStatusBarPanelTextSingle" xml:space="preserve">
<value>len ${Lenght}</value>
</data>
<data name="StatusBarService.SelectionStatusBarPanelTextMulti" xml:space="preserve">
<value>len ${Rows} * ${Cols} (${Total})$</value>
</data>
<data name="Templates.File.Categories.Misc" xml:space="preserve"> <data name="Templates.File.Categories.Misc" xml:space="preserve">
<value>Misc</value> <value>Misc</value>
</data> </data>

21
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs

@ -211,6 +211,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
codeEditorView.TextArea.TextEntering += TextAreaTextEntering; codeEditorView.TextArea.TextEntering += TextAreaTextEntering;
codeEditorView.TextArea.TextEntered += TextAreaTextEntered; codeEditorView.TextArea.TextEntered += TextAreaTextEntered;
codeEditorView.TextArea.Caret.PositionChanged += TextAreaCaretPositionChanged; codeEditorView.TextArea.Caret.PositionChanged += TextAreaCaretPositionChanged;
codeEditorView.TextArea.SelectionChanged += TextAreaSelectionChanged;
codeEditorView.TextArea.DefaultInputHandler.CommandBindings.Add( codeEditorView.TextArea.DefaultInputHandler.CommandBindings.Add(
new CommandBinding(CustomCommands.CtrlSpaceCompletion, OnCodeCompletion)); new CommandBinding(CustomCommands.CtrlSpaceCompletion, OnCodeCompletion));
SearchPanel.Install(codeEditorView.TextArea); SearchPanel.Install(codeEditorView.TextArea);
@ -381,6 +382,26 @@ namespace ICSharpCode.AvalonEdit.AddIn
SD.StatusBar.SetCaretPosition(col, this.Line, chOffset); SD.StatusBar.SetCaretPosition(col, this.Line, chOffset);
} }
void TextAreaSelectionChanged(object sender, EventArgs e)
{
if (document == null)
return;
if (sender == this.ActiveTextEditor.TextArea) {
HandleSelectionChanged();
}
}
void HandleSelectionChanged()
{
TextArea textArea = this.ActiveTextEditor.TextArea;
if (textArea == null)
return;
Selection selection = textArea.Selection;
SD.StatusBar.SetSelectionSingle(selection.Length);
}
public INavigationPoint BuildNavPoint() public INavigationPoint BuildNavPoint()
{ {
int lineNumber = this.Line; int lineNumber = this.Line;

13
src/Main/Base/Project/Src/Services/StatusBar/StatusBarService.cs

@ -25,6 +25,19 @@ namespace ICSharpCode.SharpDevelop.Gui
void SetCaretPosition(int x, int y, int charOffset); void SetCaretPosition(int x, int y, int charOffset);
//void SetInsertMode(bool insertMode); //void SetInsertMode(bool insertMode);
/// <summary>
/// Sets the selection lenght in the status bar.
/// </summary>
/// <param name="lenght">selection lenght</param>
void SetSelectionSingle(int lenght);
/// <summary>
/// Sets rect selection size in the status bar.
/// </summary>
/// <param name="rows">vertical size of selecion</param>
/// <param name="cols">horizontal size of selection</param>
void SetSelectionMulti(int rows, int cols);
/// <summary> /// <summary>
/// Sets the message shown in the left-most pane in the status bar. /// Sets the message shown in the left-most pane in the status bar.
/// </summary> /// </summary>

10
src/Main/SharpDevelop/Workbench/SDStatusBar.cs

@ -23,6 +23,7 @@ namespace ICSharpCode.SharpDevelop.Workbench
StatusBarItem txtStatusBarPanel = new StatusBarItem(); StatusBarItem txtStatusBarPanel = new StatusBarItem();
StatusBarItem cursorStatusBarPanel = new StatusBarItem(); StatusBarItem cursorStatusBarPanel = new StatusBarItem();
StatusBarItem selectionStatusBarPanel = new StatusBarItem();
StatusBarItem modeStatusBarPanel = new StatusBarItem(); StatusBarItem modeStatusBarPanel = new StatusBarItem();
public StatusBarItem CursorStatusBarPanel { public StatusBarItem CursorStatusBarPanel {
@ -31,6 +32,12 @@ namespace ICSharpCode.SharpDevelop.Workbench
} }
} }
public StatusBarItem SelectionStatusBarPanel {
get {
return selectionStatusBarPanel;
}
}
public StatusBarItem ModeStatusBarPanel { public StatusBarItem ModeStatusBarPanel {
get { get {
return modeStatusBarPanel; return modeStatusBarPanel;
@ -40,6 +47,7 @@ namespace ICSharpCode.SharpDevelop.Workbench
public SDStatusBar() public SDStatusBar()
{ {
cursorStatusBarPanel.Width = 150; cursorStatusBarPanel.Width = 150;
selectionStatusBarPanel.Content = 50;
modeStatusBarPanel.Width = 25; modeStatusBarPanel.Width = 25;
statusProgressBar.Minimum = 0; statusProgressBar.Minimum = 0;
@ -52,11 +60,13 @@ namespace ICSharpCode.SharpDevelop.Workbench
statusProgressBarItem.HorizontalContentAlignment = HorizontalAlignment.Stretch; statusProgressBarItem.HorizontalContentAlignment = HorizontalAlignment.Stretch;
DockPanel.SetDock(modeStatusBarPanel, Dock.Right); DockPanel.SetDock(modeStatusBarPanel, Dock.Right);
DockPanel.SetDock(selectionStatusBarPanel, Dock.Right);
DockPanel.SetDock(cursorStatusBarPanel, Dock.Right); DockPanel.SetDock(cursorStatusBarPanel, Dock.Right);
DockPanel.SetDock(statusProgressBarItem, Dock.Right); DockPanel.SetDock(statusProgressBarItem, Dock.Right);
DockPanel.SetDock(jobNamePanel, Dock.Right); DockPanel.SetDock(jobNamePanel, Dock.Right);
Items.Add(modeStatusBarPanel); Items.Add(modeStatusBarPanel);
Items.Add(selectionStatusBarPanel);
Items.Add(cursorStatusBarPanel); Items.Add(cursorStatusBarPanel);
Items.Add(statusProgressBarItem); Items.Add(statusProgressBarItem);
Items.Add(jobNamePanel); Items.Add(jobNamePanel);

24
src/Main/SharpDevelop/Workbench/StatusBarService.cs

@ -42,6 +42,30 @@ namespace ICSharpCode.SharpDevelop.Workbench
); );
} }
public void SetSelectionSingle(int lenght)
{
if (lenght > 0) {
statusBar.SelectionStatusBarPanel.Content = StringParser.Parse(
"${res:StatusBarService.SelectionStatusBarPanelTextSingle}",
new StringTagPair("Lenght", String.Format("{0,-10}", lenght)));
} else {
statusBar.SelectionStatusBarPanel.Content = null;
}
}
public void SetSelectionMulti(int rows, int cols)
{
if (rows > 0 && cols > 0) {
statusBar.SelectionStatusBarPanel.Content = StringParser.Parse(
"${res:StatusBarService.SelectionStatusBarPanelTextMulti}",
new StringTagPair("Rows", String.Format("{0,-10}", rows)),
new StringTagPair("Cols", String.Format("{0,-10}", cols)),
new StringTagPair("Total", String.Format("{0,-10}", rows * cols)));
} else {
statusBar.SelectionStatusBarPanel.Content = null;
}
}
public void SetInsertMode(bool insertMode) public void SetInsertMode(bool insertMode)
{ {
statusBar.ModeStatusBarPanel.Content = insertMode ? StringParser.Parse("${res:StatusBarService.CaretModes.Insert}") : StringParser.Parse("${res:StatusBarService.CaretModes.Overwrite}"); statusBar.ModeStatusBarPanel.Content = insertMode ? StringParser.Parse("${res:StatusBarService.CaretModes.Insert}") : StringParser.Parse("${res:StatusBarService.CaretModes.Overwrite}");

Loading…
Cancel
Save