Add control elements for columns.
- NEU: Steuer-Elemente für Spalten.
This commit is contained in:
parent
5833e0fcb7
commit
a009c1ab39
@ -26,12 +26,23 @@ namespace zaaReloaded2.Controller.Elements
|
||||
/// </summary>
|
||||
public abstract class ControlElementBase : ElementBase
|
||||
{
|
||||
#region Propertis
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of child elements, all of which must be derived
|
||||
/// from FormatElementBase.
|
||||
/// </summary>
|
||||
public IList<FormatElementBase> Children { get; internal set; }
|
||||
|
||||
/// <summary>
|
||||
/// Informs whether this control element can have child elements.
|
||||
/// </summary>
|
||||
public virtual bool CanHaveChildren { get { return true; } }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
||||
public ControlElementBase()
|
||||
: this(new List<FormatElementBase>())
|
||||
{ }
|
||||
@ -45,6 +56,10 @@ namespace zaaReloaded2.Controller.Elements
|
||||
: this(new List<FormatElementBase>() { children })
|
||||
{ }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Protected methods
|
||||
|
||||
/// <summary>
|
||||
/// Creates a clone of the Children list (for use in cloning
|
||||
/// derived classes).
|
||||
@ -54,5 +69,7 @@ namespace zaaReloaded2.Controller.Elements
|
||||
{
|
||||
return Children.Select(child => child.Clone() as FormatElementBase).ToList();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,6 @@ namespace zaaReloaded2.Controller.Elements
|
||||
set
|
||||
{
|
||||
_content = value;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
54
zaaReloaded2/Controller/Elements/NextColumn.cs
Executable file
54
zaaReloaded2/Controller/Elements/NextColumn.cs
Executable file
@ -0,0 +1,54 @@
|
||||
/* NextColumn.cs
|
||||
* part of zaaReloaded2
|
||||
*
|
||||
* Copyright 2015 Daniel Kraus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace zaaReloaded2.Controller.Elements
|
||||
{
|
||||
/// <summary>
|
||||
/// Format element that causes a Formatter object to move the
|
||||
/// insertion point to the next colum in a layout table.
|
||||
/// </summary>
|
||||
class NextColumn : ControlElementBase
|
||||
{
|
||||
public override string Label
|
||||
{
|
||||
get { return "Nächste Spalte"; }
|
||||
}
|
||||
|
||||
public override bool CanHaveChildren
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Run(Formatter.Formatter formatter)
|
||||
{
|
||||
formatter.NextColumn();
|
||||
}
|
||||
|
||||
protected override ElementBase CreateInstance()
|
||||
{
|
||||
return new NextColumn();
|
||||
}
|
||||
}
|
||||
}
|
54
zaaReloaded2/Controller/Elements/TwoColumns.cs
Executable file
54
zaaReloaded2/Controller/Elements/TwoColumns.cs
Executable file
@ -0,0 +1,54 @@
|
||||
/* TwoColumns.cs
|
||||
* part of zaaReloaded2
|
||||
*
|
||||
* Copyright 2015 Daniel Kraus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace zaaReloaded2.Controller.Elements
|
||||
{
|
||||
/// <summary>
|
||||
/// Format element that causes a Formatter object to insert a table with
|
||||
/// two columns and one row into the documents.
|
||||
/// </summary>
|
||||
class TwoColumns : ControlElementBase
|
||||
{
|
||||
public override string Label
|
||||
{
|
||||
get { return "Zwei Spalten einfügen"; }
|
||||
}
|
||||
|
||||
public override bool CanHaveChildren
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Run(Formatter.Formatter formatter)
|
||||
{
|
||||
formatter.InsertTwoColumns();
|
||||
}
|
||||
|
||||
protected override ElementBase CreateInstance()
|
||||
{
|
||||
return new TwoColumns();
|
||||
}
|
||||
}
|
||||
}
|
@ -89,6 +89,7 @@ namespace zaaReloaded2.Controller
|
||||
{
|
||||
return SettingsList.FirstOrDefault(s => s.Uid == uid);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Private methods
|
||||
@ -127,7 +128,9 @@ namespace zaaReloaded2.Controller
|
||||
def.SettingsNameWard,
|
||||
new List<ElementBase>()
|
||||
{
|
||||
new TwoColumns(),
|
||||
new SelectFirstDay(defaultItems),
|
||||
new NextColumn(),
|
||||
new SelectLastDay(defaultItems)
|
||||
}
|
||||
)
|
||||
|
@ -119,13 +119,14 @@ namespace zaaReloaded2.Formatter
|
||||
|
||||
if (Document != null)
|
||||
{
|
||||
Document.ActiveWindow.Selection.ClearCharacterDirectFormatting();
|
||||
Document.ActiveWindow.Selection.ClearParagraphDirectFormatting();
|
||||
Selection s = Document.ActiveWindow.Selection;
|
||||
s.ClearCharacterDirectFormatting();
|
||||
s.ClearParagraphDirectFormatting();
|
||||
if (!string.IsNullOrEmpty(ParagraphStyle))
|
||||
{
|
||||
Document.ActiveWindow.Selection.set_Style(ParagraphStyle);
|
||||
s.set_Style(ParagraphStyle);
|
||||
}
|
||||
Document.ActiveWindow.Selection.Range.Text = _buffer.ToString();
|
||||
s.Range.Text = _buffer.ToString();
|
||||
}
|
||||
if (Parent != null)
|
||||
{
|
||||
|
@ -121,6 +121,8 @@ namespace zaaReloaded2.Formatter
|
||||
{
|
||||
if (!CanRun) throw new InvalidOperationException("No laboratory data to format.");
|
||||
|
||||
CreateParagraphStyle();
|
||||
_secondaryBuffer.ParagraphStyle = zaaReloaded2.Properties.Settings.Default.ParagraphStyleName;
|
||||
int current = 0;
|
||||
while (current < Settings.Elements.Count)
|
||||
{
|
||||
@ -145,8 +147,6 @@ namespace zaaReloaded2.Formatter
|
||||
current++;
|
||||
}
|
||||
}
|
||||
CreateParagraphStyle();
|
||||
_secondaryBuffer.ParagraphStyle = zaaReloaded2.Properties.Settings.Default.ParagraphStyleName;
|
||||
_secondaryBuffer.Flush();
|
||||
}
|
||||
|
||||
@ -208,6 +208,39 @@ namespace zaaReloaded2.Formatter
|
||||
ProcessAllTimePoints(controlElement.Children);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Inserts a table with two columns into the document.
|
||||
/// </summary>
|
||||
public void InsertTwoColumns()
|
||||
{
|
||||
_secondaryBuffer.Flush();
|
||||
if (Document != null)
|
||||
{
|
||||
Range r = Document.ActiveWindow.Selection.Range;
|
||||
_table = Document.Tables.Add(r, NumRows: 1, NumColumns: 2);
|
||||
_table.AllowAutoFit = true;
|
||||
_table.AutoFitBehavior(WdAutoFitBehavior.wdAutoFitWindow);
|
||||
_table.PreferredWidthType = WdPreferredWidthType.wdPreferredWidthPercent;
|
||||
_table.PreferredWidth = 100;
|
||||
_table.Borders.Enable = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Moves the insertion point to the next column in a layout
|
||||
/// table.
|
||||
/// </summary>
|
||||
public void NextColumn()
|
||||
{
|
||||
if (_table == null)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"Kann nicht zur nächsten Spalte wechseln, da bislang keine Tabelle eingefügt wurde.");
|
||||
}
|
||||
_secondaryBuffer.Flush();
|
||||
Document.ActiveWindow.Selection.MoveRight(WdUnits.wdCell);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a zaaReloaded2 paragraph style in the document.
|
||||
/// </summary>
|
||||
@ -324,6 +357,7 @@ namespace zaaReloaded2.Formatter
|
||||
Laboratory _laboratory;
|
||||
DocumentWriter _primaryBuffer;
|
||||
DocumentWriter _secondaryBuffer;
|
||||
Table _table;
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
@ -35,6 +35,18 @@ namespace zaaReloaded2.ViewModels
|
||||
/// </summary>
|
||||
public ObservableCollection<ElementViewModel> Elements { get; protected set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets information whether this control element view model can
|
||||
/// have child elements;
|
||||
/// </summary>
|
||||
public virtual bool CanHaveChildren
|
||||
{
|
||||
get
|
||||
{
|
||||
return ((ControlElementBase)Element).CanHaveChildren;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
@ -105,7 +105,9 @@ namespace zaaReloaded2.ViewModels
|
||||
{
|
||||
CreateControlElementViewModel(new SelectFirstDay()),
|
||||
CreateControlElementViewModel(new SelectLastDay()),
|
||||
CreateControlElementViewModel(new SelectEachDay())
|
||||
CreateControlElementViewModel(new SelectEachDay()),
|
||||
CreateControlElementViewModel(new TwoColumns()),
|
||||
CreateControlElementViewModel(new NextColumn()),
|
||||
}
|
||||
)
|
||||
);
|
||||
@ -130,7 +132,9 @@ namespace zaaReloaded2.ViewModels
|
||||
{
|
||||
CreateControlElementViewModel(new SelectFirstDay(), copyFromViewModel),
|
||||
CreateControlElementViewModel(new SelectLastDay(), copyFromViewModel),
|
||||
CreateControlElementViewModel(new SelectEachDay(), copyFromViewModel)
|
||||
CreateControlElementViewModel(new SelectEachDay(), copyFromViewModel),
|
||||
CreateControlElementViewModel(new TwoColumns()),
|
||||
CreateControlElementViewModel(new NextColumn()),
|
||||
}
|
||||
)
|
||||
);
|
||||
|
@ -30,23 +30,11 @@ namespace zaaReloaded2.ViewModels
|
||||
{
|
||||
#region Properties
|
||||
|
||||
/// <summary>
|
||||
/// Gets the label of the wrapped element.
|
||||
/// </summary>
|
||||
public virtual string Label
|
||||
{
|
||||
[DebuggerStepThrough]
|
||||
get
|
||||
{
|
||||
return Element.Label;
|
||||
}
|
||||
}
|
||||
|
||||
public override string DisplayString
|
||||
{
|
||||
get
|
||||
{
|
||||
return Label;
|
||||
return Element.Label;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,25 +89,6 @@ namespace zaaReloaded2.ViewModels
|
||||
return clone;
|
||||
}
|
||||
|
||||
public override string DisplayString
|
||||
{
|
||||
get
|
||||
{
|
||||
if (String.IsNullOrEmpty(Content))
|
||||
{
|
||||
return _displayString;
|
||||
}
|
||||
else
|
||||
{
|
||||
return base.DisplayString;
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
_displayString = value;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Private methods
|
||||
|
@ -345,7 +345,8 @@ namespace zaaReloaded2.ViewModels
|
||||
|
||||
bool CanAddChildElement()
|
||||
{
|
||||
return LastSelectedElement is ControlElementViewModel;
|
||||
return LastSelectedElement is ControlElementViewModel &&
|
||||
((ControlElementViewModel)LastSelectedElement).CanHaveChildren;
|
||||
}
|
||||
|
||||
void DoEditElement()
|
||||
|
@ -193,10 +193,12 @@
|
||||
<ItemGroup>
|
||||
<Compile Include="Controller\Elements\ControlElementBase.cs" />
|
||||
<Compile Include="Controller\Elements\FormatElementBase.cs" />
|
||||
<Compile Include="Controller\Elements\NextColumn.cs" />
|
||||
<Compile Include="Controller\Elements\SelectEachDay.cs" />
|
||||
<Compile Include="Controller\Elements\SelectLastDay.cs" />
|
||||
<Compile Include="Controller\Elements\SelectFirstDay.cs" />
|
||||
<Compile Include="Controller\Elements\CustomText.cs" />
|
||||
<Compile Include="Controller\Elements\TwoColumns.cs" />
|
||||
<Compile Include="Controller\Settings.cs" />
|
||||
<Compile Include="Controller\SettingsRepository.cs" />
|
||||
<Compile Include="Demo\Demo.cs" />
|
||||
|
Loading…
Reference in New Issue
Block a user