Index: Application/Ringtoets/src/Application.Ringtoets.Setup/Licentie.rtf =================================================================== diff -u -re5658f822fa85cab8e99cb3069867d3a87867386 -r31d4921763c045040f9300542aed356147966cc8 --- Application/Ringtoets/src/Application.Ringtoets.Setup/Licentie.rtf (.../Licentie.rtf) (revision e5658f822fa85cab8e99cb3069867d3a87867386) +++ Application/Ringtoets/src/Application.Ringtoets.Setup/Licentie.rtf (.../Licentie.rtf) (revision 31d4921763c045040f9300542aed356147966cc8) @@ -1,20 +1,20 @@ {\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang2057\deflangfe2052\themelang2057\themelangfe2052\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;} {\f13\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ???????????????????????????????};}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;} -{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f44\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimSun;} +{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f43\fbidi \fnil\fcharset134\fprq2{\*\panose 00000000000000000000}@SimSun;} {\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbmajor\f31501\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ???????????????????????????????};} {\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbminor\f31505\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ???????????????????????????????};} -{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f45\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} -{\f46\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\f48\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f49\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f50\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} -{\f51\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f52\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f53\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f65\fbidi \fmodern\fcharset238\fprq1 Courier New CE;} -{\f66\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}{\f68\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f69\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f70\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);} -{\f71\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f72\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f73\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);} -{\f177\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt ???????????????????????????????};}{\f385\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f386\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;} -{\f388\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f389\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f392\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f393\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);} -{\f415\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f416\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f418\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f419\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} -{\f422\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f423\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\f425\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;}{\f426\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;} -{\f428\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;}{\f429\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;}{\f430\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f431\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);} -{\f432\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f433\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f434\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f487\fbidi \fnil\fcharset0\fprq2 @SimSun Western;} +{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f44\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\f45\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\f47\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f48\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f49\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\f50\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f51\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f52\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f64\fbidi \fmodern\fcharset238\fprq1 Courier New CE;} +{\f65\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}{\f67\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f68\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f69\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);} +{\f70\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f71\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f72\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);} +{\f176\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt ???????????????????????????????};}{\f384\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f385\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;} +{\f387\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f388\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f391\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f392\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);} +{\f414\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f415\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f417\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f418\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} +{\f421\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f422\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\f424\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;}{\f425\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;} +{\f427\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;}{\f428\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;}{\f429\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f430\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);} +{\f431\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f432\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f433\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f476\fbidi \fnil\fcharset0\fprq2 @SimSun Western;} {\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} {\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} {\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} @@ -49,9 +49,9 @@ \rsid7675473\rsid7691196\rsid7822308\rsid7881760\rsid7884431\rsid8282417\rsid8336808\rsid8355315\rsid8415516\rsid8471656\rsid8613675\rsid9054218\rsid9251590\rsid9259169\rsid9259511\rsid9324301\rsid9447286\rsid9534683\rsid9597286\rsid9837452\rsid10041733 \rsid10243997\rsid10641850\rsid10645519\rsid10889275\rsid10903480\rsid10907227\rsid10959533\rsid10965045\rsid10969153\rsid11011627\rsid11234572\rsid11404854\rsid11541481\rsid11547836\rsid11865015\rsid11875882\rsid12255994\rsid12603449\rsid12614763 \rsid12714335\rsid12780684\rsid12874015\rsid12992049\rsid13187850\rsid13327662\rsid13378822\rsid13521383\rsid13526234\rsid13707436\rsid13846203\rsid13923732\rsid14042855\rsid14624369\rsid14690030\rsid14697806\rsid14769386\rsid15038976\rsid15292511 -\rsid15341850\rsid15549573\rsid15600639\rsid15998385\rsid16073068\rsid16086011\rsid16612758\rsid16653078}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info -{\title License Agreement}{\author Deltares}{\operator Edwin Bos}{\creatim\yr2016\mo1\dy13\hr16\min25}{\revtim\yr2016\mo7\dy11\hr16\min44}{\printim\yr2016\mo1\dy13\hr13\min29}{\version51}{\edmins65}{\nofpages3}{\nofwords963}{\nofchars5490} -{\*\company Stichting Deltares}{\nofcharsws6441}{\vern49167}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect +\rsid15341850\rsid15549573\rsid15599413\rsid15600639\rsid15998385\rsid16073068\rsid16086011\rsid16612758\rsid16653078}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info +{\title License Agreement}{\author Deltares}{\operator Robert Tangerman}{\creatim\yr2016\mo1\dy13\hr16\min25}{\revtim\yr2016\mo7\dy20\hr11\min43}{\printim\yr2016\mo1\dy13\hr13\min29}{\version52}{\edmins67}{\nofpages3}{\nofwords962}{\nofchars5489} +{\*\company Stichting Deltares}{\nofcharsws6439}{\vern49167}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect \widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1 \noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1440\dgvorigin1440\dghshow1\dgvshow1 \jexpand\viewkind1\viewscale110\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct @@ -182,14 +182,15 @@ \hich\af2\dbch\af31505\loch\f2 . Core.Components.OxyPlot.dll \par }\pard \ltrpar\ql \fi-360\li1215\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin1215\itap0\pararsid9324301 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid1918796\charrsid16612758 \hich\af2\dbch\af31505\loch\f2 1}{ \rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid1135803 \hich\af2\dbch\af31505\loch\f2 7}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid11865015\charrsid16612758 -\hich\af2\dbch\af31505\loch\f2 . Core.Components.OxyPlot.Forms.dll +\hich\af2\dbch\af31505\loch\f2 . Core.Components.OxyPlot.Forms.dll}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid11865015 +\par }\pard \ltrpar\ql \fi-360\li1215\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin1215\itap0\pararsid15599413 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15599413 \hich\af2\dbch\af31505\loch\f2 18}{\rtlch\fcs1 \af2\afs21 +\ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15599413\charrsid16612758 \hich\af2\dbch\af31505\loch\f2 . Core.Plugins.}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15599413 \hich\af2\dbch\af31505\loch\f2 +Chart}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15599413 \hich\af2\dbch\af31505\loch\f2 .dll}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15599413\charrsid16612758 \par }\pard \ltrpar\ql \fi-360\li1215\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin1215\itap0\pararsid11865015 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid6122838\charrsid16612758 \hich\af2\dbch\af31505\loch\f2 1}{ -\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid1135803 \hich\af2\dbch\af31505\loch\f2 8}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid11865015\charrsid16612758 +\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15599413 \hich\af2\dbch\af31505\loch\f2 9}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid11865015\charrsid16612758 \hich\af2\dbch\af31505\loch\f2 . Core.Plugins.CommonTools.dll -\par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid1135803 \hich\af2\dbch\af31505\loch\f2 19}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid7884431\charrsid16612758 .}{\rtlch\fcs1 +\par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15599413 \hich\af2\dbch\af31505\loch\f2 20}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid7884431\charrsid16612758 .}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid11865015\charrsid16612758 \hich\af2\dbch\af31505\loch\f2 Core.Plugins.DotSpatial.dll -\par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid1135803 \hich\af2\dbch\af31505\loch\f2 20}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid11865015\charrsid16612758 -\hich\af2\dbch\af31505\loch\f2 . Core.Plugins.OxyPlot.dll \par }\pard \ltrpar\ql \fi-360\li1215\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin1215\itap0\pararsid1391986 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid1135803 \hich\af2\dbch\af31505\loch\f2 21}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid11865015\charrsid16612758 \hich\af2\dbch\af31505\loch\f2 . Core.Plugins.ProjectExplorer.dll \par }\pard \ltrpar\ql \li855\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin855\itap0\pararsid15600639 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid16612758 @@ -212,7 +213,8 @@ \rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid15549573 \hich\af2\dbch\af31505\loch\f2 . Ringtoets.Common.Data.dll}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid1055020\charrsid1055020 \hich\af2\dbch\af31505\loch\f2 4. Ringtoets.Common.IO.dll -\par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid1055020 \hich\af2\dbch\af31505\loch\f2 5}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid15600639\charrsid13327662 \hich\af2\dbch\af31505\loch\f2 . Ringtoets.Common.Forms.dll +\par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid1055020 \hich\af2\dbch\af31505\loch\f2 5}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid15600639\charrsid13327662 \hich\af2\dbch\af31505\loch\f2 . Rin\hich\af2\dbch\af31505\loch\f2 +gtoets.Common.Forms.dll \par }\pard \ltrpar\ql \fi-360\li1215\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin1215\itap0\pararsid423640 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid423640 \hich\af2\dbch\af31505\loch\f2 6}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid423640\charrsid13327662 \hich\af2\dbch\af31505\loch\f2 . Ringtoets.Common.}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid1604777 \hich\af2\dbch\af31505\loch\f2 Service}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid423640\charrsid13327662 \hich\af2\dbch\af31505\loch\f2 .dll @@ -251,7 +253,7 @@ \par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid11011627 \hich\af2\dbch\af31505\loch\f2 24}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid13521383 \hich\af2\dbch\af31505\loch\f2 . Ringtoets.Integration.Service.dll}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid13521383\charrsid13327662 \par }\pard \ltrpar\ql \fi-360\li1215\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin1215\itap0\pararsid15600639 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid11011627 \hich\af2\dbch\af31505\loch\f2 25}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 -\f2\fs21\insrsid15600639\charrsid15600639 .\hich\af2\dbch\af31505\loch\f2 Ringtoets.Piping.Data.dll +\f2\fs21\insrsid15600639\charrsid15600639 \hich\af2\dbch\af31505\loch\f2 . Ringtoets.Piping.Data.dll \par }\pard \ltrpar\ql \fi-360\li1215\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin1215\itap0\pararsid10641850 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid11011627 \hich\af2\dbch\af31505\loch\f2 26}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid15600639\charrsid15600639 \hich\af2\dbch\af31505\loch\f2 . Ringtoets.Piping.Forms.dll}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid10641850 \par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid11011627 \hich\af2\dbch\af31505\loch\f2 27}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid10641850 \hich\af2\dbch\af31505\loch\f2 . }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 @@ -268,53 +270,51 @@ \par }\pard \ltrpar\ql \fi-360\li1215\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin1215\itap0\pararsid15600639 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid11011627 \hich\af2\dbch\af31505\loch\f2 32}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid15600639\charrsid15600639 \hich\af2\dbch\af31505\loch\f2 . Ringtoets.Piping.Service.dll \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid15600639 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid15600639\charrsid15600639 -\par }{\rtlch\fcs1 \ab\af2\afs24 \ltrch\fcs0 \b\f2\fs24\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid11547836 \hich\af2\dbch\af31505\loch\f2 A. \tab }{\rtlch\fcs1 \ab\af2\afs24 \ltrch\fcs0 -\b\f2\fs24\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid1800570 \hich\af2\dbch\af31505\loch\f2 \hich\f2 Software licentievoorwaarden onder de \'93\loch\f2 \hich\f2 GNU LESSER GENERAL PUBLIC LICENSE\'94\loch\f2 - versie 3 zoals gepubliceerd door de Free Software Foundation. +\par }{\rtlch\fcs1 \ab\af2\afs24 \ltrch\fcs0 \b\f2\fs24\insrsid15600639\charrsid15599413 \hich\af2\dbch\af31505\loch\f2 A. \tab }{\rtlch\fcs1 \ab\af2\afs24 \ltrch\fcs0 \b\f2\fs24\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid1800570 +\hich\af2\dbch\af31505\loch\f2 \hich\f2 Software licentievoorwaarden onder de \'93\loch\f2 \hich\f2 GNU LESSER GENERAL PUBLIC LICENSE\'94\hich\af2\dbch\af31505\loch\f2 versie 3 zoals gepubliceerd door de Free Software Foundation. \par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid1800570 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid9259511 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 \hich\af2\dbch\af31505\loch\f2 1. }{\rtlch\fcs1 -\af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid9259511\charrsid1010843 \hich\af2\dbch\af31505\loch\f2 Dit programma genaamd \hich\f2 \lquote \loch\f2 Ringtoets\hich\f2 \rquote \hich\af2\dbch\af31505\loch\f2 +\af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid9259511\charrsid1010843 \hich\af2\dbch\af31505\loch\f2 Dit programma genaamd \hich\f2 \lquote \loch\f2 Ringtoets\hich\f2 \rquote \loch\f2 is software voor het gebruik bij het toetsen van dijken overeenkomstig het }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid9259511 \hich\af2\dbch\af31505\loch\f2 WTI 2017 }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid9259511\charrsid1010843 \hich\af2\dbch\af31505\loch\f2 -voor dijken. Ringtoets is nog in ontwikkeling en nog niet voldoende getest om te gebruiken anders dan voor kennisname van haar functionaliteiten. Ieder ander gebruik wordt\hich\af2\dbch\af31505\loch\f2 ten stelligste afgeraden door Deltares. }{ -\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid9259511 +voor dijken. Ringtoets is nog in ontwikkeling en nog niet voldoende getest om te gebruiken anders dan voor kennisname van haar functionaliteiten. Ieder ander gebruik wordt ten stelligste afgeraden door Deltares. }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 +\f2\fs21\lang1043\langfe2052\langnp1043\insrsid9259511 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid15600639 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15549573 \par \hich\af2\dbch\af31505\loch\f2 2. }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 \hich\af2\dbch\af31505\loch\f2 Copyright }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15341850 \loch\af2\dbch\af31505\hich\f2 \'a9\loch\f2 }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 \hich\af2\dbch\af31505\loch\f2 Stichting Deltares, 201}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 6}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 .}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 -\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 \hich\af2\dbch\af31505\loch\f2 Alle rechten voorbehouden. +\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 \hich\af2\dbch\af31505\loch\f2 A\hich\af2\dbch\af31505\loch\f2 lle rechten voorbehouden. \par \par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15549573 \hich\af2\dbch\af31505\loch\f2 3}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 . U mag het programma }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 zelf verder verspreiden}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 en/of aanpassen }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid1010843 \hich\af2\dbch\af31505\loch\f2 overeenkomstig }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 de GNU Lesser General Public License versie 3. \par \par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15549573 \hich\af2\dbch\af31505\loch\f2 4}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 -\hich\af2\dbch\af31505\loch\f2 . Het programma\hich\af2\dbch\af31505\loch\f2 wordt verspreid in de hoop dat het van nut is, maar ZONDER ENIGE GA}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 -\hich\af2\dbch\af31505\loch\f2 RANTIE}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 . }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 -\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 Lees de tekst van de }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 -GNU Lesser General Public License }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid12255994 \hich\af2\dbch\af31505\loch\f2 versie 3 }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 -\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 voor meer details. +\hich\af2\dbch\af31505\loch\f2 . Het programma wordt verspreid in de hoop dat het van nut is, maar ZONDER ENIGE GA}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 RANTIE}{ +\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 . }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 +\hich\af2\dbch\af31505\loch\f2 Lees de tekst van de }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 GNU Lesser General Public License }{\rtlch\fcs1 \af2\afs21 +\ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid12255994 \hich\af2\dbch\af31505\loch\f2 versie 3 }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 +voor meer details. \par \par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15549573 \hich\af2\dbch\af31505\loch\f2 5}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 . De tekst van de GNU Lesser General Public License }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 versie 3 }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 wordt gezamenlijk met de Software}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 geleverd}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 . }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 \hich\af2\dbch\af31505\loch\f2 Zo niet, zie dan }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid4150084 \hich\af2\dbch\af31505\loch\f2 <} {\field\fldedit{\*\fldinst {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 HYPERLINK "}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 -\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid1800570 \hich\af2\dbch\af31505\loch\f2 http://www.gnu.org/licenses/lgpl-3.0.en.html}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 -\hich\af2\dbch\af31505\loch\f2 " }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 {\*\datafield +\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid1800570 \hich\af2\dbch\af31505\loch\f2 http://www.gnu.org/licenses/lgpl-3.0\hich\af2\dbch\af31505\loch\f2 .en.html}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 +\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 " }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b7200000068007400740070003a002f002f007700770077002e0067006e0075002e006f00720067002f006c006900630065006e007300650073002f006c00670070006c002d0033002e0030002e0065006e002e006800 -74006d006c000000795881f43b1d7f48af2c825dc485276300000000a5ab0000000000004400e900006e14ec68d800000000000700b2004f000000ec000000006e20ffffff000000720021010002}}}{\fldrslt {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 -\cs15\f2\fs21\ul\cf17\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid9534683 \hich\af2\dbch\af31505\loch\f2 http://www.gnu.org/licenses/lg\hich\af2\dbch\af31505\loch\f2 pl-3.0.en.html}}}\sectd \ltrsect -\linex0\headery708\footery708\colsx708\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid4150084 \hich\af2\dbch\af31505\loch\f2 >}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 -\f2\fs21\lang1043\langfe2052\langnp1043\insrsid12603449 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 voor de tekst}{\rtlch\fcs1 \af2\afs21 -\ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 . +74006d006c000000795881f43b1d7f48af2c825dc485276300000000a5ab0000000000004400e900006e14ec68d800000000000700b2004f000000ec000000006e20ffffff00000072002101000200}}}{\fldrslt {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 +\cs15\f2\fs21\ul\cf17\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid9534683 \hich\af2\dbch\af31505\loch\f2 http://www.gnu.org/licenses/lgpl-3.0.en.html}}}\sectd \ltrsect\linex0\headery708\footery708\colsx708\sectdefaultcl\sftnbj {\rtlch\fcs1 +\af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid4150084 \hich\af2\dbch\af31505\loch\f2 >}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid12603449 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 +\af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 voor de tekst}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 . \par \par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15549573 \hich\af2\dbch\af31505\loch\f2 6}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 . Alle namen}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid14769386 \hich\af2\dbch\af31505\loch\f2 , }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 -\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 logo\hich\f2 \rquote \loch\f2 s en verwijzingen naar "Deltares" zijn }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 +\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 logo\hich\f2 \rquote \hich\af2\dbch\af31505\loch\f2 s en verwijzingen naar "Deltares" zijn }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 geregistreerde merknamen van}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 Stichting Deltares, }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 en blijven te allen tijde eigendom van}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 Stichting Deltares. }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid13187850 @@ -323,20 +323,20 @@ \par }\pard \ltrpar\ql \li855\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin855\itap0\pararsid15600639 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid13187850 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid15600639 {\rtlch\fcs1 \ab\af2\afs24 \ltrch\fcs0 \b\f2\fs24\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 \hich\af2\dbch\af31505\loch\f2 B.\tab }{ \rtlch\fcs1 \ab\af2\afs24 \ltrch\fcs0 \b\f2\fs24\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid1800570 \hich\af2\dbch\af31505\loch\f2 \hich\f2 Software licentievoorwaarden onder de \'93\loch\f2 \hich\f2 GNU GENERAL PUBLIC LICENSE\'94\loch\f2 - versie 3 zoals gepubliceerd door de Free Software Foundation.}{\rtlch\fcs1 \ab\af2\afs24 \ltrch\fcs0 \b\f2\fs24\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 + versie 3 z\hich\af2\dbch\af31505\loch\f2 oals gepubliceerd door de Free Software Foundation.}{\rtlch\fcs1 \ab\af2\afs24 \ltrch\fcs0 \b\f2\fs24\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 \par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid1800570 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid16073068 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 \hich\af2\dbch\af31505\loch\f2 1. }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid16073068\charrsid1010843 \hich\af2\dbch\af31505\loch\f2 Dit programma genaamd \hich\f2 \lquote \loch\f2 Ringtoets\hich\f2 \rquote \loch\f2 is software voor het gebruik bij het toetsen van dijken overeenkomstig het }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid16073068 \hich\af2\dbch\af31505\loch\f2 WTI 2017 }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 -\f2\fs21\lang1043\langfe2052\langnp1043\insrsid16073068\charrsid1010843 \hich\af2\dbch\af31505\loch\f2 -voor dijken. Ringtoets is nog in ontwikkeling en nog niet voldoende getest om te gebruiken anders dan voor kennisname van haar functionaliteiten. Ieder ander gebruik wordt ten stelligste afgeraden door Deltares. }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 +\f2\fs21\lang1043\langfe2052\langnp1043\insrsid16073068\charrsid1010843 \hich\af2\dbch\af31505\loch\f2 voor dijk\hich\af2\dbch\af31505\loch\f2 +en. Ringtoets is nog in ontwikkeling en nog niet voldoende getest om te gebruiken anders dan voor kennisname van haar functionaliteiten. Ieder ander gebruik wordt ten stelligste afgeraden door Deltares. }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid16073068 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid15600639 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15549573 \par \hich\af2\dbch\af31505\loch\f2 2. }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 \hich\af2\dbch\af31505\loch\f2 Copyright}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid3020322 \hich\af2\dbch\af31505\loch\f2 \hich\f2 \'a9}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 \hich\af2\dbch\af31505\loch\f2 Stichting Deltares, 201}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 6}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 .}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 -\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 \hich\af2\dbch\af31505\loch\f2 A\hich\af2\dbch\af31505\loch\f2 lle rechten voorbehouden. +\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 \hich\af2\dbch\af31505\loch\f2 Alle recht\hich\af2\dbch\af31505\loch\f2 en voorbehouden. \par \par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15549573 \hich\af2\dbch\af31505\loch\f2 3}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 . U mag het programma }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 zelf verder verspreiden}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 @@ -347,9 +347,9 @@ \par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15549573 \hich\af2\dbch\af31505\loch\f2 4}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 . Het programma wordt verspreid in de hoop dat het van nut is, maar ZONDER ENIGE GA}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 RANTIE}{ \rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 . }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 -\hich\af2\dbch\af31505\loch\f2 Lees de tekst va\hich\af2\dbch\af31505\loch\f2 n de }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 GNU General Public License}{ -\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid7881760 \hich\af2\dbch\af31505\loch\f2 versie 3}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 -\hich\af2\dbch\af31505\loch\f2 voor meer details. +\hich\af2\dbch\af31505\loch\f2 Lees de tekst van de }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 GNU General Public License}{\rtlch\fcs1 \af2\afs21 +\ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid7881760 \hich\af2\dbch\af31505\loch\f2 versie 3}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 + voor meer details. \par \par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15549573 \hich\af2\dbch\af31505\loch\f2 5}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 . De tekst van de GNU General Public License }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid11875882 \hich\af2\dbch\af31505\loch\f2 versie 3 }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 @@ -360,18 +360,18 @@ \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid3686156 \hich\af2\dbch\af31505\loch\f2 http://www.gnu.org/licenses/gpl-3.0.en.html}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 " }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b7000000068007400740070003a002f002f007700770077002e0067006e0075002e006f00720067002f006c006900630065006e007300650073002f00670070006c002d0033002e0030002e0065006e002e0068007400 -6d006c000000795881f43b1d7f48af2c825dc485276300000000a5ab000000477d4c0000945e0000000065002f30000060b30004000000000000000000d8003500000000000000e5ff1f0060}}}{\fldrslt {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 +6d006c000000795881f43b1d7f48af2c825dc485276300000000a5ab000000477d4c0000945e0000000065002f30000060b30004000000000000000000d8003500000000000000e5ff1f006000}}}{\fldrslt {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \cs15\f2\fs21\ul\cf17\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid9534683 \hich\af2\dbch\af31505\loch\f2 http://www.gnu.org/licenses/gpl-3.0.en.html}}}\sectd \ltrsect\linex0\headery708\footery708\colsx708\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid4150084 \hich\af2\dbch\af31505\loch\f2 >}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 voor de tekst}{ \rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 . \par \par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15549573 \hich\af2\dbch\af31505\loch\f2 6}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 . Alle namen}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid12992049 \hich\af2\dbch\af31505\loch\f2 , }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 -\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 logo\hich\f2 \rquote \loch\f2 s en verwij\hich\af2\dbch\af31505\loch\f2 zingen naar "Deltares" zijn }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 -\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 geregistreerde merknamen van}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 -\hich\af2\dbch\af31505\loch\f2 Stichting Deltares, }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 en blijven te allen tijde eigendom van}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 -\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 Stichting Deltares. }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid13187850 -\hich\af2\dbch\af31505\loch\f2 Alle rechten voorbehouden.}{\rtlch\fcs1 \ab\af2\afs24 \ltrch\fcs0 \b\f2\fs24\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 +\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 logo\hich\f2 \rquote \loch\f2 s en verwijzingen naar "Deltares" zijn }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 +\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 geregistree\hich\af2\dbch\af31505\loch\f2 rde merknamen van}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 +\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 Stichting Deltares, }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639 \hich\af2\dbch\af31505\loch\f2 +en blijven te allen tijde eigendom van}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 Stichting Deltares. }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 +\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid13187850 \hich\af2\dbch\af31505\loch\f2 Alle rechten voorbehouden.}{\rtlch\fcs1 \ab\af2\afs24 \ltrch\fcs0 \b\f2\fs24\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid5593428 \par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15600639 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1043\langfe2052\langnp1043\insrsid16086011\charrsid6624093 \par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a 9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad @@ -478,18 +478,18 @@ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff010000000c6ad98892f1d411a65f0040963251e5000000000000000000000000100b -2cc382dbd1010300000080020000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff020000000000000000000000000000000000000000000000100b2cc382dbd101 -100b2cc382dbd101000000000000000000000000da004b0050004900d10050004600c000cf004500ce004e005300c9004b00ce00d500ca004d00c100520051003d003d000000000000000000000000000000000032000101ffffffffffffffff030000000000000000000000000000000000000000000000100b2cc382db -d101100b2cc382dbd1010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000 +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff010000000c6ad98892f1d411a65f0040963251e50000000000000000000000000051 +063c6be2d1010300000080020000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff0200000000000000000000000000000000000000000000000051063c6be2d101 +0051063c6be2d10100000000000000000000000033005200d8004100ce00cd004d00cc004100d400d2005600d800cb00c100330034004f0055004d005700d0003d003d000000000000000000000000000000000032000101ffffffffffffffff0300000000000000000000000000000000000000000000000051063c6be2 +d1010051063c6be2d1010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000 00000000000000000000000000000000d800000000000000010000000200000003000000feffffff0500000006000000070000000800000009000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c623a536f75726365732053656c65637465645374796c653d225c4150412e58534c22205374796c654e616d653d224150412220786d6c6e733a623d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f7267 2f6f6666696365446f63756d656e742f323030362f6269626c696f6772617068792220786d6c6e733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879223e3c2f623a536f75726365733e00000000 -0000000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b43344338 -413345382d363046312d344242432d384434412d3932414544364133323134357d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c +0000000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b42413030 +314537352d324344332d344330332d393545322d4238354437384535304335427d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c 64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6f70656e500072006f007000650072007400690065007300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffffffff000000000000 0000000000000000000000000000000000000000000000000000000000000400000055010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000 Index: Application/Ringtoets/src/Application.Ringtoets/App.xaml.cs =================================================================== diff -u -ra1ec5faebf7ccf8e67fa34a2b73cd1063ab48840 -r31d4921763c045040f9300542aed356147966cc8 --- Application/Ringtoets/src/Application.Ringtoets/App.xaml.cs (.../App.xaml.cs) (revision a1ec5faebf7ccf8e67fa34a2b73cd1063ab48840) +++ Application/Ringtoets/src/Application.Ringtoets/App.xaml.cs (.../App.xaml.cs) (revision 31d4921763c045040f9300542aed356147966cc8) @@ -33,15 +33,14 @@ using System.Windows.Controls.Primitives; using System.Windows.Forms; using Application.Ringtoets.Storage; -using Core.Common.Controls.Dialogs; using Core.Common.Gui; using Core.Common.Gui.Appenders; using Core.Common.Gui.Forms.MainWindow; using Core.Common.Gui.Settings; using Core.Common.Utils; +using Core.Plugins.Chart; using Core.Plugins.CommonTools; using Core.Plugins.DotSpatial; -using Core.Plugins.OxyPlot; using Core.Plugins.ProjectExplorer; using log4net; using Ringtoets.GrassCoverErosionInwards.Plugin; @@ -157,7 +156,7 @@ new GrassCoverErosionInwardsPlugin(), new PipingPlugin(), new HeightStructuresPlugin(), - new OxyPlotPlugin(), + new ChartPlugin(), new DotSpatialPlugin() #if INCLUDE_DEMOPROJECT , new DemoProjectPlugin() Index: Application/Ringtoets/src/Application.Ringtoets/Application.Ringtoets.csproj =================================================================== diff -u -r34af24d6bf23796e627fd03b7532d4abe6fc715c -r31d4921763c045040f9300542aed356147966cc8 --- Application/Ringtoets/src/Application.Ringtoets/Application.Ringtoets.csproj (.../Application.Ringtoets.csproj) (revision 34af24d6bf23796e627fd03b7532d4abe6fc715c) +++ Application/Ringtoets/src/Application.Ringtoets/Application.Ringtoets.csproj (.../Application.Ringtoets.csproj) (revision 31d4921763c045040f9300542aed356147966cc8) @@ -146,6 +146,11 @@ Core.Common.Version False + + {4163B996-3455-4324-A38A-9F2F0E6FCB52} + Core.Plugins.Chart + False + {93E73FAB-FAE8-49C6-9ABB-27D24DF761F6} Core.Plugins.CommonTools @@ -155,11 +160,6 @@ {610E0A9C-1997-4C43-A10E-39D4C66ADA93} Core.Plugins.DotSpatial - - {4163B996-3455-4324-A38A-9F2F0E6FCB52} - Core.Plugins.OxyPlot - False - {ED20DBA9-D577-423F-A68D-A0A8130FB10B} Core.Plugins.ProjectExplorer Index: Core/Plugins/src/Core.Plugins.Chart/ChartPlugin.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Chart/ChartPlugin.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Chart/ChartPlugin.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,123 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using Core.Common.Gui; +using Core.Common.Gui.Forms; +using Core.Common.Gui.Plugin; +using Core.Components.Charting.Forms; +using Core.Plugins.Chart.Commands; +using Core.Plugins.Chart.Legend; + +namespace Core.Plugins.Chart +{ + /// + /// This class ties all the components together to enable charting interaction. + /// + public class ChartPlugin : PluginBase + { + private ChartingRibbon chartingRibbon; + + private ChartLegendController chartLegendController; + + private bool activated; + + public override IRibbonCommandHandler RibbonCommandHandler + { + get + { + return chartingRibbon; + } + } + + public override void Activate() + { + chartLegendController = CreateLegendController(Gui); + chartingRibbon = CreateRibbon(chartLegendController, Gui); + + chartLegendController.ToggleView(); + Gui.ViewHost.ActiveDocumentViewChanged += OnActiveDocumentViewChanged; + activated = true; + } + + public override void Dispose() + { + if (activated) + { + Gui.ViewHost.ActiveDocumentViewChanged -= OnActiveDocumentViewChanged; + } + + base.Dispose(); + } + + /// + /// Creates a new . + /// + /// The to use for the controller + /// . + /// A new instance. + private ChartLegendController CreateLegendController(IViewController viewController) + { + var controller = new ChartLegendController(viewController); + controller.OnOpenLegend += (s, e) => UpdateComponentsForActiveDocumentView(); + return controller; + } + + /// + /// Creates the and the commands that will be used when clicking on the buttons. + /// + /// The to use for the + /// . + /// The controller for views. + /// A new instance. + private static ChartingRibbon CreateRibbon(ChartLegendController chartLegendController, IViewController viewController) + { + return new ChartingRibbon + { + ToggleLegendViewCommand = new ToggleLegendViewCommand(chartLegendController) + }; + } + + private void OnActiveDocumentViewChanged(object sender, EventArgs e) + { + UpdateComponentsForActiveDocumentView(); + } + + /// + /// Updates the components which the knows about so that it reflects + /// the currently active view. + /// + private void UpdateComponentsForActiveDocumentView() + { + var chartView = Gui.ViewHost.ActiveDocumentView as IChartView; + if (chartView != null) + { + chartingRibbon.Chart = chartView.Chart; + chartLegendController.Update(chartView.Chart.Data); + } + else + { + chartingRibbon.Chart = null; + chartLegendController.Update(null); + } + } + } +} \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Chart/ChartingRibbon.xaml =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Chart/ChartingRibbon.xaml (revision 0) +++ Core/Plugins/src/Core.Plugins.Chart/ChartingRibbon.xaml (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Index: Core/Plugins/src/Core.Plugins.Chart/ChartingRibbon.xaml.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Chart/ChartingRibbon.xaml.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Chart/ChartingRibbon.xaml.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,145 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System.Collections.Generic; +using System.Windows; +using Core.Common.Controls.Commands; +using Core.Common.Gui.Forms; +using Core.Components.Charting.Forms; +using Fluent; + +namespace Core.Plugins.Chart +{ + /// + /// This class represents the ribbon interaction which has to do with charting. + /// + public partial class ChartingRibbon : IRibbonCommandHandler + { + private IChartControl chart; + + /// + /// Creates a new instance of . + /// + public ChartingRibbon() + { + InitializeComponent(); + } + + /// + /// Sets the to show the ribbon for. + /// + public IChartControl Chart + { + private get + { + return chart; + } + set + { + chart = value; + + if (chart != null) + { + ShowChartingTab(); + } + else + { + HideChartingTab(); + } + } + } + + /// + /// Sets the command used when the toggle legend view button is clicked. + /// + public ICommand ToggleLegendViewCommand { private get; set; } + + public IEnumerable Commands + { + get + { + if (ToggleLegendViewCommand != null) + { + yield return ToggleLegendViewCommand; + } + } + } + + /// + /// Shows the charting contextual tab. + /// + private void ShowChartingTab() + { + ChartingContextualGroup.Visibility = Visibility.Visible; + ValidateItems(); + } + + /// + /// Hides the charting contextual tab. + /// + private void HideChartingTab() + { + ChartingContextualGroup.Visibility = Visibility.Collapsed; + } + + public Ribbon GetRibbonControl() + { + return RibbonControl; + } + + public void ValidateItems() + { + ToggleLegendViewButton.IsChecked = ToggleLegendViewCommand != null && ToggleLegendViewCommand.Checked; + TogglePanningButton.IsChecked = Chart != null && Chart.IsPanningEnabled; + ToggleRectangleZoomingButton.IsChecked = Chart != null && Chart.IsRectangleZoomingEnabled; + } + + public bool IsContextualTabVisible(string tabGroupName, string tabName) + { + // TODO: Required only because this method is called each time ValidateItems is called in MainWindow + // Once ValidateItems isn't responsible for showing/hiding contextual tabs, then this method can return false, + // but more ideally be removed. + return ChartingContextualGroup.Name == tabGroupName && ChartingContextualGroup.Visibility == Visibility.Visible; + } + + private void ButtonToggleLegend_Click(object sender, RoutedEventArgs e) + { + ToggleLegendViewCommand.Execute(); + } + + private void ButtonTogglePanning_Click(object sender, RoutedEventArgs e) + { + Chart.TogglePanning(); + ValidateItems(); + } + + private void ButtonToggleRectangleZooming_Click(object sender, RoutedEventArgs e) + { + Chart.ToggleRectangleZooming(); + ValidateItems(); + } + + private void ButtonZoomToAll_Click(object sender, RoutedEventArgs e) + { + Chart.ZoomToAll(); + } + } +} \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Chart/Commands/ToggleLegendViewCommand.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Chart/Commands/ToggleLegendViewCommand.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Chart/Commands/ToggleLegendViewCommand.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,64 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using Core.Common.Controls.Commands; +using Core.Plugins.Chart.Legend; + +namespace Core.Plugins.Chart.Commands +{ + /// + /// This class describes the command which toggles the visibility of the . + /// + public class ToggleLegendViewCommand : ICommand + { + private readonly ChartLegendController controller; + + /// + /// Creates a new instance of . + /// + /// The to use to invoke actions and determine state. + public ToggleLegendViewCommand(ChartLegendController controller) + { + this.controller = controller; + } + + public bool Enabled + { + get + { + return true; + } + } + + public bool Checked + { + get + { + return controller.IsLegendViewOpen; + } + } + + public void Execute(params object[] arguments) + { + controller.ToggleView(); + } + } +} \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Chart/Core.Plugins.Chart.csproj =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Chart/Core.Plugins.Chart.csproj (revision 0) +++ Core/Plugins/src/Core.Plugins.Chart/Core.Plugins.Chart.csproj (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,157 @@ + + + + + {4163B996-3455-4324-A38A-9F2F0E6FCB52} + Library + Properties + Core.Plugins.Chart + Core.Plugins.Chart + v4.0 + 512 + + + true + DEBUG;TRACE + full + false + prompt + AllRules.ruleset + + + + + none + TRACE + true + none + prompt + AllRules.ruleset + + + + + TRACE + true + pdbonly + prompt + AllRules.ruleset + + + + ..\..\..\..\packages\Fluent.Ribbon.3.4.0\lib\net40\Fluent.dll + True + + + + + + + + + + + + + + Properties\GlobalAssembly.cs + + + ChartingRibbon.xaml + + + + UserControl + + + ChartLegendView.cs + + + + + + + True + True + Resources.resx + + + + + {3BBFD65B-B277-4E50-AE6D-BD24C3434609} + Core.Common.Base + False + + + {1D27F91F-4E62-4EAF-A0A8-A32708B9A9B1} + Core.Common.Controls.TreeView + False + + + {9A2D67E6-26AC-4D17-B11A-2B4372F2F572} + Core.Common.Controls + False + + + {30E4C2AE-719E-4D70-9FA9-668A9767FBFA} + Core.Common.Gui + False + + + {c90b77da-e421-43cc-b82e-529651bc21ac} + Core.Common.Version + False + + + {2465cca1-c505-4827-9454-4fd5fd9194cd} + Core.Components.Charting.Forms + False + + + {516EBC95-B8F2-428C-B7F6-733F01BF8FDD} + Core.Components.Charting + False + + + + + MSBuild:Compile + Designer + + + + + ChartLegendView.cs + Designer + + + PublicResXFileCodeGenerator + Resources.Designer.cs + Designer + + + + + + + + + + + + + + + Copying.Lesser.licenseheader + + + + + + \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Chart/Legend/ChartLegendController.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Chart/Legend/ChartLegendController.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Chart/Legend/ChartLegendController.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,124 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Linq; +using Core.Common.Controls.Views; +using Core.Common.Gui; +using Core.Common.Gui.Forms.ViewHost; +using Core.Components.Charting.Data; +using Core.Plugins.Chart.Legend; +using Core.Plugins.Chart.Properties; + +namespace Core.Plugins.Chart.Legend +{ + /// + /// This class controls the actions which are related to controlling visibility and updating contents of a . + /// + public class ChartLegendController + { + private readonly IViewController viewController; + + /// + /// Fired when the chart legend has been opened. + /// + public EventHandler OnOpenLegend; + + private IView legendView; + + /// + /// Creates a new instance of . + /// + /// The to invoke actions upon. + public ChartLegendController(IViewController viewController) + { + if (viewController == null) + { + throw new ArgumentNullException("viewController", "Cannot create a ChartLegendController when the view controller is null."); + } + this.viewController = viewController; + } + + /// + /// Gets a value indicating whether the is visible. + /// + public bool IsLegendViewOpen + { + get + { + return legendView != null && viewController.ViewHost.ToolViews.Contains(legendView); + } + } + + /// + /// Toggles the visibility of the . + /// + public void ToggleView() + { + if (IsLegendViewOpen) + { + CloseLegendView(); + } + else + { + OpenLegendView(); + } + } + + /// + /// Updates the data for the if it is open. + /// + /// The to show. If null the + /// data will be cleared. + public void Update(ChartData data) + { + if (IsLegendViewOpen) + { + legendView.Data = data; + } + } + + /// + /// Open the . + /// + private void OpenLegendView() + { + legendView = new ChartLegendView(); + + viewController.ViewHost.AddToolView(legendView, ToolViewLocation.Left); + viewController.ViewHost.SetImage(legendView, Resources.ChartIcon); + + if (OnOpenLegend != null) + { + OnOpenLegend(this, EventArgs.Empty); + } + } + + /// + /// Closess the . + /// + private void CloseLegendView() + { + viewController.ViewHost.Remove(legendView); + legendView = null; + } + } +} \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Chart/Legend/ChartLegendView.Designer.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Chart/Legend/ChartLegendView.Designer.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Chart/Legend/ChartLegendView.Designer.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,57 @@ +using Core.Common.Controls.TreeView; + +namespace Core.Plugins.Chart.Legend +{ + partial class ChartLegendView + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ChartLegendView)); + this.treeViewControl = new TreeViewControl(); + this.SuspendLayout(); + // + // treeViewControl + // + resources.ApplyResources(this.treeViewControl, "treeViewControl"); + this.treeViewControl.Name = "treeViewControl"; + // + // ChartLegendView + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.treeViewControl); + this.Name = "ChartLegendView"; + this.ResumeLayout(false); + + } + + #endregion + + private TreeViewControl treeViewControl; + } +} \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Chart/Legend/ChartLegendView.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Chart/Legend/ChartLegendView.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Chart/Legend/ChartLegendView.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,195 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System.Drawing; +using System.Linq; +using System.Windows.Forms; +using Core.Common.Base; +using Core.Common.Controls.TreeView; +using Core.Common.Controls.Views; +using Core.Components.Charting.Data; +using Core.Components.Charting.Forms; +using Core.Plugins.Chart.PresentationObjects; +using ChartResources = Core.Plugins.Chart.Properties.Resources; +using GuiResources = Core.Common.Gui.Properties.Resources; + +namespace Core.Plugins.Chart.Legend +{ + /// + /// This class defines a view which shows the data that have been added to a . + /// + public sealed partial class ChartLegendView : UserControl, IView + { + /// + /// Creates a new instance of . + /// + public ChartLegendView() + { + InitializeComponent(); + Text = ChartResources.General_Chart; + + RegisterTreeNodeInfos(); + } + + public object Data + { + get + { + return (ChartData) treeViewControl.Data; + } + set + { + treeViewControl.Data = (ChartData) value; + } + } + + private void RegisterTreeNodeInfos() + { + treeViewControl.RegisterTreeNodeInfo(new TreeNodeInfo + { + Text = context => context.WrappedData.Name, + Image = GetImage, + ChildNodeObjects = ChartDataContextGetChildNodeObjects, + CanDrag = (context, o) => !(context.WrappedData is ChartMultipleAreaData), + CanCheck = context => !(context.WrappedData is ChartDataCollection), + IsChecked = context => context.WrappedData.IsVisible, + OnNodeChecked = ChartDataContextOnNodeChecked, + CanDrop = ChartDataContextCanDropAndInsert, + CanInsert = ChartDataContextCanDropAndInsert, + OnDrop = ChartDataContextOnDrop + }); + + treeViewControl.RegisterTreeNodeInfo(new TreeNodeInfo + { + Text = collection => collection.Name, + Image = collection => GuiResources.folder, + ChildNodeObjects = GetCollectionChildNodeObjects, + CanDrag = (multipleAreaData, parentData) => true, + CanDrop = ChartDataCollectionCanDropAndInsert, + CanInsert = ChartDataCollectionCanDropAndInsert, + OnDrop = ChartDataCollectionOnDrop + }); + } + + private static object[] GetChildNodeObjects(ChartDataCollection chartDataCollection) + { + return chartDataCollection.List.Reverse().Select(chartData => new ChartDataContext(chartData, chartDataCollection)).Cast().ToArray(); + } + + private void NotifyObserversOfData(ChartData chartData) + { + chartData.NotifyObservers(); + + var observableParent = Data as IObservable; + if (observableParent != null) + { + observableParent.NotifyObservers(); + } + } + + #region ChartDataContext + + private Image GetImage(ChartDataContext context) + { + if (context.WrappedData is ChartPointData) + { + return ChartResources.PointsIcon; + } + + if (context.WrappedData is ChartLineData) + { + return ChartResources.LineIcon; + } + + if (context.WrappedData is ChartAreaData || context.WrappedData is ChartMultipleAreaData) + { + return ChartResources.AreaIcon; + } + + return GuiResources.folder; + } + + private object[] ChartDataContextGetChildNodeObjects(ChartDataContext chartDataContext) + { + var collection = chartDataContext.WrappedData as ChartDataCollection; + return collection != null ? GetChildNodeObjects(collection) : new object[0]; + } + + private void ChartDataContextOnNodeChecked(ChartDataContext chartDataContext, object parentData) + { + chartDataContext.WrappedData.IsVisible = !chartDataContext.WrappedData.IsVisible; + NotifyObserversOfData(chartDataContext.WrappedData); + } + + private static bool ChartDataContextCanDropAndInsert(object draggedData, object targetData) + { + var draggedDataContext = (ChartDataContext) draggedData; + var targetDataContext = (ChartDataContext) targetData; + + return !(targetDataContext.WrappedData is ChartDataCollection) && draggedDataContext.ParentChartData.Equals(targetDataContext.ParentChartData); + } + + private void ChartDataContextOnDrop(object droppedData, object newParentData, object oldParentData, int position, TreeViewControl control) + { + var chartContext = (ChartDataContext) droppedData; + var sourceContext = oldParentData as ChartDataContext; + + var chartData = chartContext.WrappedData; + ChartDataCollection parent = (ChartDataCollection) (sourceContext != null ? sourceContext.WrappedData : oldParentData); + + parent.Remove(chartData); + parent.Insert(parent.List.Count - position, chartData); + parent.NotifyObservers(); + } + + #endregion + + # region ChartDataCollection + + private static object[] GetCollectionChildNodeObjects(ChartDataCollection chartDataCollection) + { + return GetChildNodeObjects(chartDataCollection); + } + + private static bool ChartDataCollectionCanDropAndInsert(object draggedData, object targetData) + { + var draggedDataContext = (ChartDataContext) draggedData; + var targetDataContext = targetData as ChartDataContext; + var targetDataObject = targetDataContext != null ? targetDataContext.ParentChartData : targetData; + + return draggedDataContext.ParentChartData.Equals(targetDataObject); + } + + private static void ChartDataCollectionOnDrop(object droppedData, object newParentData, object oldParentData, int position, TreeViewControl control) + { + var chartContext = (ChartDataContext) droppedData; + + var chartData = chartContext.WrappedData; + ChartDataCollection parent = (ChartDataCollection) oldParentData; + + parent.Remove(chartData); + parent.Insert(parent.List.Count - position, chartData); + parent.NotifyObservers(); + } + + # endregion + } +} \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Chart/Legend/ChartLegendView.resx =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Chart/Legend/ChartLegendView.resx (revision 0) +++ Core/Plugins/src/Core.Plugins.Chart/Legend/ChartLegendView.resx (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + Fill + + + + 0 + + + + 0, 0 + + + 0 + + + 228, 412 + + + 2 + + + treeViewControl + + + Core.Plugins.OxyPlot.Legend.LegendTreeView, Core.Plugins.OxyPlot, Version=0.5.0.1876, Culture=neutral, PublicKeyToken=null + + + $this + + + 0 + + + True + + + 6, 13 + + + 228, 412 + + + ChartLegendView + + + System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Chart/PresentationObjects/ChartDataContext.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Chart/PresentationObjects/ChartDataContext.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Chart/PresentationObjects/ChartDataContext.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,63 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using Core.Common.Controls.PresentationObjects; +using Core.Components.Charting.Data; + +namespace Core.Plugins.Chart.PresentationObjects +{ + /// + /// Presentation object for . + /// + public class ChartDataContext : WrappedObjectContextBase + { + private readonly ChartDataCollection parentChartData; + + /// + /// Creates a new instance of . + /// + /// The to wrap. + /// The parent + /// the belongs to. + /// Thrown when is null. + public ChartDataContext(ChartData wrappedData, ChartDataCollection parentChartData) : base(wrappedData) + { + if (parentChartData == null) + { + throw new ArgumentNullException("parentChartData"); + } + this.parentChartData = parentChartData; + } + + /// + /// Gets the parent + /// the belongs to. + /// + public ChartDataCollection ParentChartData + { + get + { + return parentChartData; + } + } + } +} \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Chart/Properties/AssemblyInfo.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Chart/Properties/AssemblyInfo.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Chart/Properties/AssemblyInfo.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,27 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System.Reflection; +using System.Runtime.InteropServices; + +[assembly: AssemblyTitle("Core.Plugins.Chart")] +[assembly: AssemblyProduct("Core.Plugins.Chart")] +[assembly: Guid("008e702b-a124-422e-9fb5-cd65fc85e49a")] \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Chart/Properties/Resources.Designer.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Chart/Properties/Resources.Designer.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Chart/Properties/Resources.Designer.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,241 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.17929 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Core.Plugins.Chart.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Core.Plugins.Chart.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap AreaIcon { + get { + object obj = ResourceManager.GetObject("AreaIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap ChartIcon { + get { + object obj = ResourceManager.GetObject("ChartIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized string similar to Grafiek. + /// + public static string General_Chart { + get { + return ResourceManager.GetString("General_Chart", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap LineIcon { + get { + object obj = ResourceManager.GetObject("LineIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized string similar to Diagram. + /// + public static string OxyPlotPlugin_GetViewInfos_Diagram { + get { + return ResourceManager.GetString("OxyPlotPlugin_GetViewInfos_Diagram", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap PanIcon { + get { + object obj = ResourceManager.GetObject("PanIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap PointsIcon { + get { + object obj = ResourceManager.GetObject("PointsIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap RectangleZoomIcon { + get { + object obj = ResourceManager.GetObject("RectangleZoomIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized string similar to Grafieken. + /// + public static string Ribbon_ContextualGroup_Charting { + get { + return ResourceManager.GetString("Ribbon_ContextualGroup_Charting", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Navigatie. + /// + public static string Ribbon_GroupBox_Navigation { + get { + return ResourceManager.GetString("Ribbon_GroupBox_Navigation", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Grafiek. + /// + public static string Ribbon_Toggle_Legend { + get { + return ResourceManager.GetString("Ribbon_Toggle_Legend", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Open het grafiekenpaneel.. + /// + public static string Ribbon_Toggle_Legend_ToolTip { + get { + return ResourceManager.GetString("Ribbon_Toggle_Legend_ToolTip", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verschuiven. + /// + public static string Ribbon_Toggle_Panning { + get { + return ResourceManager.GetString("Ribbon_Toggle_Panning", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Om te verschuiven, houdt u de linker muisknop ingedrukt op de grafiek terwijl u de muis beweegt.. + /// + public static string Ribbon_Toggle_Panning_ToolTip { + get { + return ResourceManager.GetString("Ribbon_Toggle_Panning_ToolTip", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zoom door rechthoek. + /// + public static string Ribbon_Toggle_RectangleZooming { + get { + return ResourceManager.GetString("Ribbon_Toggle_RectangleZooming", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Om in te zoomen met behulp van een rechthoek, houdt u de linker muisknop ingedrukt op de grafiek terwijl u de muis beweegt.. + /// + public static string Ribbon_Toggle_RectangleZooming_ToolTip { + get { + return ResourceManager.GetString("Ribbon_Toggle_RectangleZooming_ToolTip", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zoom naar alles. + /// + public static string Ribbon_ZoomToAll { + get { + return ResourceManager.GetString("Ribbon_ZoomToAll", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zet het zoomniveau van de grafiek dusdanig dat alle zichtbare elementen precies in het beeld passen.. + /// + public static string Ribbon_ZoomToAll_ToolTip { + get { + return ResourceManager.GetString("Ribbon_ZoomToAll_ToolTip", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap ZoomToAllIcon { + get { + object obj = ResourceManager.GetObject("ZoomToAllIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} Index: Core/Plugins/src/Core.Plugins.Chart/Properties/Resources.resx =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Chart/Properties/Resources.resx (revision 0) +++ Core/Plugins/src/Core.Plugins.Chart/Properties/Resources.resx (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\resources\area.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\resources\chart.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + Grafiek + + + ..\resources\line.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\resources\hand.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\resources\points.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\resources\zoomrectangle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + Grafieken + + + Navigatie + + + Grafiek + + + Open het grafiekenpaneel. + + + Verschuiven + + + Om te verschuiven, houdt u de linker muisknop ingedrukt op de grafiek terwijl u de muis beweegt. + + + Zoom door rechthoek + + + Om in te zoomen met behulp van een rechthoek, houdt u de linker muisknop ingedrukt op de grafiek terwijl u de muis beweegt. + + + Zoom naar alles + + + Zet het zoomniveau van de grafiek dusdanig dat alle zichtbare elementen precies in het beeld passen. + + + ..\resources\zoomextents.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + Diagram + + \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Chart/Resources/area.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Chart/Resources/chart.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Chart/Resources/document.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Chart/Resources/hand.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Chart/Resources/line.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Chart/Resources/points.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Chart/Resources/zoomExtents.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Chart/Resources/zoomRectangle.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Chart/packages.config =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Chart/packages.config (revision 0) +++ Core/Plugins/src/Core.Plugins.Chart/packages.config (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,27 @@ + + + + + + \ No newline at end of file Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.OxyPlot/ChartingRibbon.xaml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.OxyPlot/ChartingRibbon.xaml.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.OxyPlot/Commands/ToggleLegendViewCommand.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.OxyPlot/Core.Plugins.OxyPlot.csproj'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.OxyPlot/Legend/ChartLegendController.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.OxyPlot/Legend/ChartLegendView.Designer.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.OxyPlot/Legend/ChartLegendView.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.OxyPlot/Legend/ChartLegendView.resx'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.OxyPlot/OxyPlotPlugin.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.OxyPlot/PresentationObjects/ChartDataContext.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.OxyPlot/Properties/AssemblyInfo.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.OxyPlot/Properties/Resources.Designer.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.OxyPlot/Properties/Resources.resx'. Fisheye: No comparison available. Pass `N' to diff? Index: Core/Plugins/src/Core.Plugins.OxyPlot/Resources/area.png =================================================================== diff -u -r5a98830aee77b1ee0158c11ba5cccffc656226e0 -r31d4921763c045040f9300542aed356147966cc8 Binary files differ Index: Core/Plugins/src/Core.Plugins.OxyPlot/Resources/chart.png =================================================================== diff -u -rb7ca402d4388054a86a27c5f76fc81d53afc2461 -r31d4921763c045040f9300542aed356147966cc8 Binary files differ Index: Core/Plugins/src/Core.Plugins.OxyPlot/Resources/document.png =================================================================== diff -u -rb7ca402d4388054a86a27c5f76fc81d53afc2461 -r31d4921763c045040f9300542aed356147966cc8 Binary files differ Index: Core/Plugins/src/Core.Plugins.OxyPlot/Resources/hand.png =================================================================== diff -u -r9bf140313b222568c57110c9a8a664e2e1a213e1 -r31d4921763c045040f9300542aed356147966cc8 Binary files differ Index: Core/Plugins/src/Core.Plugins.OxyPlot/Resources/line.png =================================================================== diff -u -r5a98830aee77b1ee0158c11ba5cccffc656226e0 -r31d4921763c045040f9300542aed356147966cc8 Binary files differ Index: Core/Plugins/src/Core.Plugins.OxyPlot/Resources/points.png =================================================================== diff -u -r5a98830aee77b1ee0158c11ba5cccffc656226e0 -r31d4921763c045040f9300542aed356147966cc8 Binary files differ Index: Core/Plugins/src/Core.Plugins.OxyPlot/Resources/zoomExtents.png =================================================================== diff -u -r2c97a81a5403ee33f12550aaa89fd1f1b3be52ea -r31d4921763c045040f9300542aed356147966cc8 Binary files differ Index: Core/Plugins/src/Core.Plugins.OxyPlot/Resources/zoomRectangle.png =================================================================== diff -u -rc6ce091cfe2f5dff34588f0d8182b5f1adc04ca3 -r31d4921763c045040f9300542aed356147966cc8 Binary files differ Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.OxyPlot/packages.config'. Fisheye: No comparison available. Pass `N' to diff? Index: Core/Plugins/test/Core.Plugins.Chart.Test/ChartPluginTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Chart.Test/ChartPluginTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Chart.Test/ChartPluginTest.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,138 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Windows; +using System.Windows.Threading; +using Core.Common.Base.Storage; +using Core.Common.Controls.Views; +using Core.Common.Gui; +using Core.Common.Gui.Forms.MainWindow; +using Core.Common.Gui.Forms.ViewHost; +using Core.Common.Gui.Plugin; +using Core.Common.Gui.Settings; +using Core.Components.OxyPlot.Forms; +using Core.Plugins.Chart.Legend; +using NUnit.Framework; +using Rhino.Mocks; + +namespace Core.Plugins.Chart.Test +{ + [TestFixture] + public class ChartPluginTest + { + [Test] + public void DefaultConstructor_Always_NoRibbonCommandHandlerSet() + { + // Call + using (var plugin = new ChartPlugin()) + { + // Assert + Assert.IsInstanceOf(plugin); + Assert.IsNull(plugin.RibbonCommandHandler); + } + } + + [Test] + [RequiresSTA] + public void Activate_WithoutGui_ThrowsArgumentNullException() + { + // Setup + using (var plugin = new ChartPlugin()) + { + // Call + TestDelegate test = () => plugin.Activate(); + + // Assert + Assert.Throws(test); + } + } + + [Test] + [RequiresSTA] + public void Activate_WithGui_AddsChartLegendView() + { + // Setup + var mocks = new MockRepository(); + + using (var plugin = new ChartPlugin()) + { + var gui = mocks.StrictMock(); + var viewHost = mocks.Stub(); + + gui.Stub(g => g.ViewHost).Return(viewHost); + viewHost.Expect(vm => vm.ToolViews).Return(new IView[0]); + viewHost.Expect(vm => vm.AddToolView(Arg.Matches(c => true), Arg.Matches(vl => vl == ToolViewLocation.Left))); + viewHost.Expect(vm => vm.SetImage(null, null)).IgnoreArguments(); + viewHost.Expect(vm => vm.ActiveDocumentView).Return(null); + viewHost.Expect(vm => vm.ActiveDocumentViewChanged += null).IgnoreArguments(); + viewHost.Expect(vm => vm.ActiveDocumentViewChanged -= null).IgnoreArguments(); + + mocks.ReplayAll(); + + plugin.Gui = gui; + + // Call + plugin.Activate(); + + // Assert + Assert.IsInstanceOf(plugin); + Assert.NotNull(plugin.RibbonCommandHandler); + } + mocks.VerifyAll(); + } + + [Test] + [TestCase(true)] + [TestCase(false)] + [RequiresSTA] + public void GivenConfiguredGui_WhenActiveDocumentViewChangesToViewWithChart_ThenRibbonSetVisibility(bool visible) + { + // Given + var mocks = new MockRepository(); + var projectStore = mocks.Stub(); + mocks.ReplayAll(); + + using (var gui = new GuiCore(new MainWindow(), projectStore, new GuiCoreSettings())) + { + var plugin = new ChartPlugin(); + var testChartView = new TestChartView(); + var chart = new ChartControl(); + IView viewMock = visible ? (IView) testChartView : new TestView(); + + testChartView.Data = chart; + + gui.Plugins.Add(plugin); + plugin.Gui = gui; + gui.Run(); + + // When + gui.ViewHost.AddDocumentView(viewMock); + + // Then + Assert.AreEqual(visible ? Visibility.Visible : Visibility.Collapsed, plugin.RibbonCommandHandler.GetRibbonControl().ContextualGroups[0].Visibility); + mocks.VerifyAll(); + } + + Dispatcher.CurrentDispatcher.InvokeShutdown(); + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Chart.Test/ChartingRibbonTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Chart.Test/ChartingRibbonTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Chart.Test/ChartingRibbonTest.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,333 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System.Linq; +using System.Windows; +using Core.Common.Gui; +using Core.Components.Charting.Forms; +using Core.Plugins.Chart.Commands; +using Core.Plugins.Chart.Legend; +using Fluent; +using NUnit.Framework; +using Rhino.Mocks; +using Button = Fluent.Button; +using ButtonBase = System.Windows.Controls.Primitives.ButtonBase; +using ICommand = Core.Common.Controls.Commands.ICommand; +using ToggleButton = Fluent.ToggleButton; + +namespace Core.Plugins.Chart.Test +{ + [TestFixture] + public class ChartingRibbonTest + { + [Test] + [RequiresSTA] + public void Commands_NoCommandsAssigned_ReturnsEmptyCommandsCollection() + { + // Setup + var ribbon = new ChartingRibbon(); + + // Call & Assert + CollectionAssert.IsEmpty(ribbon.Commands); + } + + [Test] + [RequiresSTA] + public void Commands_CommandsAssigned_ReturnsAssignedCommands() + { + // Setup + var mocks = new MockRepository(); + var viewController = mocks.Stub(); + mocks.ReplayAll(); + + var toggleLegendViewCommand = new ToggleLegendViewCommand(new ChartLegendController(viewController)); + var ribbon = new ChartingRibbon + { + ToggleLegendViewCommand = toggleLegendViewCommand + }; + + // Call + var commands = ribbon.Commands.ToArray(); + + // Assert + CollectionAssert.AreEqual(new ICommand[]{toggleLegendViewCommand}, commands); + + mocks.VerifyAll(); + } + + [Test] + [RequiresSTA] + public void DefaultConstructor_Always_CreatesControl() + { + // Setup + var ribbon = new ChartingRibbon(); + + // Call & Assert + Assert.IsInstanceOf(ribbon.GetRibbonControl()); + } + + [Test] + [RequiresSTA] + public void IsContextualTabVisible_Always_ReturnsFalse() + { + // Setup + var ribbon = new ChartingRibbon(); + + // Call & Assert + Assert.IsFalse(ribbon.IsContextualTabVisible(null,null)); + } + + [Test] + [RequiresSTA] + public void TogglePanning_OnClick_TogglePanning() + { + // Setup + var mocks = new MockRepository(); + var chart = mocks.DynamicMock(); + chart.Expect(c => c.TogglePanning()); + + mocks.ReplayAll(); + + var ribbon = new ChartingRibbon + { + Chart = chart + }; + var button = ribbon.GetRibbonControl().FindName("TogglePanningButton") as ToggleButton; + + // Precondition + Assert.IsNotNull(button, "Ribbon should have a toggle panning button."); + + // Call + button.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent)); + + // Assert + mocks.VerifyAll(); + } + + [Test] + [RequiresSTA] + public void ToggleRectangleZooming_OnClick_ToggleRectangleZooming() + { + // Setup + var mocks = new MockRepository(); + var chart = mocks.DynamicMock(); + chart.Expect(c => c.ToggleRectangleZooming()); + + mocks.ReplayAll(); + + var ribbon = new ChartingRibbon + { + Chart = chart + }; + var button = ribbon.GetRibbonControl().FindName("ToggleRectangleZoomingButton") as ToggleButton; + + // Precondition + Assert.IsNotNull(button, "Ribbon should have a toggle rectangle zooming button."); + + // Call + button.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent)); + + // Assert + mocks.VerifyAll(); + } + + [Test] + [RequiresSTA] + public void ToggleLegendViewButton_OnClick_ExecutesToggleLegendViewCommand() + { + // Setup + var mocks = new MockRepository(); + var command = mocks.StrictMock(); + command.Expect(c => c.Execute()); + + mocks.ReplayAll(); + + var ribbon = new ChartingRibbon + { + ToggleLegendViewCommand = command + }; + var button = ribbon.GetRibbonControl().FindName("ToggleLegendViewButton") as ToggleButton; + + // Precondition + Assert.IsNotNull(button, "Ribbon should have a toggle legend view button."); + + // Call + button.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent)); + + // Assert + mocks.VerifyAll(); + } + + [Test] + [RequiresSTA] + public void ZoomToAll_OnClick_ExecutesChartZoomToAll() + { + // Setup + var ribbon = new ChartingRibbon(); + var mocks = new MockRepository(); + var chart = mocks.StrictMock(); + + chart.Expect(c => c.IsPanningEnabled).Return(true); + chart.Expect(c => c.IsRectangleZoomingEnabled).Return(true); + chart.Expect(c => c.ZoomToAll()); + + mocks.ReplayAll(); + + ribbon.Chart = chart; + + var button = ribbon.GetRibbonControl().FindName("ZoomToAllButton") as Button; + + // Precondition + Assert.IsNotNull(button, "Ribbon should have a zoom to all button."); + + // Call + button.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent)); + + // Assert + mocks.VerifyAll(); + } + + [Test] + [RequiresSTA] + [TestCase(true)] + [TestCase(false)] + public void Chart_Always_AttachesToChartAndUpdatesChartingCommands(bool buttonChecked) + { + // Setup + var mocks = new MockRepository(); + var chart = mocks.StrictMock(); + var ribbon = new ChartingRibbon(); + + chart.Expect(c => c.IsPanningEnabled).Return(buttonChecked); + chart.Expect(c => c.IsRectangleZoomingEnabled).Return(buttonChecked); + + mocks.ReplayAll(); + + var togglePanningButton = ribbon.GetRibbonControl().FindName("TogglePanningButton") as ToggleButton; + var toggleRectangleZoomingButton = ribbon.GetRibbonControl().FindName("ToggleRectangleZoomingButton") as ToggleButton; + + // Precondition + Assert.IsNotNull(togglePanningButton, "Ribbon should have a toggle panning button."); + Assert.IsNotNull(toggleRectangleZoomingButton, "Ribbon should have a rectangle zoom panning button."); + + // Call + ribbon.Chart = chart; + + // Assert + Assert.AreEqual(buttonChecked, togglePanningButton.IsChecked); + Assert.AreEqual(buttonChecked, toggleRectangleZoomingButton.IsChecked); + mocks.VerifyAll(); + } + + [Test] + [RequiresSTA] + [TestCase(true)] + [TestCase(false)] + public void Chart_WithOrWithoutChart_UpdatesChartingContextualVisibility(bool chartVisible) + { + // Setup + var mocks = new MockRepository(); + var chart = mocks.Stub(); + + mocks.ReplayAll(); + + var ribbon = new ChartingRibbon(); + + var contextualGroup = ribbon.GetRibbonControl().FindName("ChartingContextualGroup") as RibbonContextualTabGroup; + + // Precondition + Assert.IsNotNull(contextualGroup, "Ribbon should have a charting contextual group button."); + + // Call + ribbon.Chart = chartVisible ? chart : null; + + // Assert + Assert.AreEqual(chartVisible ? Visibility.Visible : Visibility.Collapsed, contextualGroup.Visibility); + mocks.VerifyAll(); + } + + [Test] + [RequiresSTA] + [TestCase(true)] + [TestCase(false)] + public void ValidateItems_Always_ToggleLegendViewIsCheckedEqualToCommandChecked(bool commandChecked) + { + // Setup + var mocks = new MockRepository(); + var command = mocks.StrictMock(); + command.Expect(c => c.Checked).Return(commandChecked); + + mocks.ReplayAll(); + + var ribbon = new ChartingRibbon + { + ToggleLegendViewCommand = command + }; + + var toggleLegendViewButton = ribbon.GetRibbonControl().FindName("ToggleLegendViewButton") as ToggleButton; + + // Precondition + Assert.IsNotNull(toggleLegendViewButton, "Ribbon should have a toggle legend view button."); + + // Call + ribbon.ValidateItems(); + + // Assert + Assert.AreEqual(commandChecked, toggleLegendViewButton.IsChecked); + mocks.VerifyAll(); + } + + [Test] + [RequiresSTA] + [TestCase(true)] + [TestCase(false)] + public void ValidateItems_Always_TogglePanningIsCheckedEqualToChartIsPanning(bool buttonChecked) + { + // Setup + var mocks = new MockRepository(); + var chart = mocks.StrictMock(); + + var ribbon = new ChartingRibbon(); + + chart.Expect(c => c.IsPanningEnabled).Return(buttonChecked).Repeat.Twice(); + chart.Expect(c => c.IsRectangleZoomingEnabled).Return(buttonChecked).Repeat.Twice(); + + mocks.ReplayAll(); + + ribbon.Chart = chart; + + var togglePanningButton = ribbon.GetRibbonControl().FindName("TogglePanningButton") as ToggleButton; + var toggleRectangleZoomingButton = ribbon.GetRibbonControl().FindName("ToggleRectangleZoomingButton") as ToggleButton; + + // Precondition + Assert.IsNotNull(togglePanningButton, "Ribbon should have a toggle panning button."); + Assert.IsNotNull(toggleRectangleZoomingButton, "Ribbon should have a rectangle zoom panning button."); + + // Call + ribbon.ValidateItems(); + + // Assert + Assert.AreEqual(buttonChecked, togglePanningButton.IsChecked); + Assert.AreEqual(buttonChecked, toggleRectangleZoomingButton.IsChecked); + mocks.VerifyAll(); + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Chart.Test/Commands/ToggleLegendViewCommandTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Chart.Test/Commands/ToggleLegendViewCommandTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Chart.Test/Commands/ToggleLegendViewCommandTest.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,134 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System.Collections.Generic; +using Core.Common.Controls.Commands; +using Core.Common.Controls.Views; +using Core.Common.Gui; +using Core.Common.Gui.Forms.ViewHost; +using Core.Plugins.Chart.Commands; +using Core.Plugins.Chart.Legend; +using NUnit.Framework; +using Rhino.Mocks; + +namespace Core.Plugins.Chart.Test.Commands +{ + [TestFixture] + public class ToggleLegendViewCommandTest + { + [Test] + public void Constructor_Always_CreatesICommand() + { + // Call + var command = new ToggleLegendViewCommand(null); + + // Assert + Assert.IsInstanceOf(command); + } + + [Test] + public void Enabled_Always_ReturnsTrue() + { + // Setup + var command = new ToggleLegendViewCommand(null); + + // Call & Assert + Assert.IsTrue(command.Enabled); + } + + [Test] + [TestCase(true)] + [TestCase(false)] + public void Checked_LegendViewOpenOrClosed_ReturnsExpectedState(bool open) + { + // Setup + var mocks = new MockRepository(); + var viewController = mocks.StrictMock(); + + if (open) + { + var toolViewList = new List(); + var viewHost = mocks.Stub(); + + viewController.Stub(tvc => tvc.ViewHost).Return(viewHost); + viewHost.Stub(vm => vm.ToolViews).Return(toolViewList); + viewHost.Expect(vm => vm.AddToolView(Arg.Matches(c => true), Arg.Matches(vl => vl == ToolViewLocation.Left))).WhenCalled(invocation => + { + toolViewList.Add(invocation.Arguments[0] as ChartLegendView); + }); + + viewHost.Expect(vm => vm.SetImage(null, null)).IgnoreArguments(); + } + + mocks.ReplayAll(); + + var controller = new ChartLegendController(viewController); + var command = new ToggleLegendViewCommand(controller); + + if (open) + { + controller.ToggleView(); + } + + // Call + var result = command.Checked; + + // Assert + Assert.AreEqual(open, result); + mocks.VerifyAll(); + } + + [Test] + public void Execute_Always_TogglesLegend() + { + // Setup + var mocks = new MockRepository(); + var viewController = mocks.StrictMock(); + var viewHost = mocks.Stub(); + var toolViewList = new List(); + + viewController.Stub(tvc => tvc.ViewHost).Return(viewHost); + viewHost.Stub(vm => vm.ToolViews).Return(toolViewList); + + // Open + viewHost.Expect(vm => vm.AddToolView(Arg.Matches(c => true), Arg.Matches(vl => vl == ToolViewLocation.Left))).WhenCalled(invocation => + { + toolViewList.Add(invocation.Arguments[0] as ChartLegendView); + }); + viewHost.Expect(vm => vm.SetImage(null, null)).IgnoreArguments(); + + // Close + viewHost.Expect(vm => vm.Remove(Arg.Matches(v => true))); + + mocks.ReplayAll(); + + var controller = new ChartLegendController(viewController); + var command = new ToggleLegendViewCommand(controller); + + // Call + command.Execute(); + command.Execute(); + + // Assert + mocks.VerifyAll(); + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Chart.Test/Core.Plugins.Chart.Test.csproj =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Chart.Test/Core.Plugins.Chart.Test.csproj (revision 0) +++ Core/Plugins/test/Core.Plugins.Chart.Test/Core.Plugins.Chart.Test.csproj (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,141 @@ + + + + Debug + x86 + {45EF3071-5C30-40AA-8B99-CE174DCEEE48} + Library + Properties + Core.Plugins.Chart.Test + Core.Plugins.Chart.Test + v4.0 + 512 + + + true + bin\Debug\ + 4 + x86 + MinimumRecommendedRules.ruleset + TRACE;DEBUG + full + + + none + bin\Release\ + 4 + x86 + MinimumRecommendedRules.ruleset + TRACE + true + + + bin\ReleaseForCodeCoverage\ + TRACE + true + pdbonly + x86 + prompt + MinimumRecommendedRules.ruleset + + + + False + ..\..\..\..\packages\Fluent.Ribbon.3.4.0\lib\net40\Fluent.dll + + + ..\..\..\..\packages\NUnit.2.6.4\lib\nunit.framework.dll + + + + + ..\..\..\..\packages\RhinoMocks.3.6.1\lib\net\Rhino.Mocks.dll + + + + + + + + + + + + + + + + + + + + Component + + + Component + + + + + Copying.Lesser.licenseheader + + + + + + {3bbfd65b-b277-4e50-ae6d-bd24c3434609} + Core.Common.Base + True + + + {1d27f91f-4e62-4eaf-a0a8-a32708b9a9b1} + Core.Common.Controls.TreeView + + + {9a2d67e6-26ac-4d17-b11a-2b4372f2f572} + Core.Common.Controls + True + + + {30E4C2AE-719E-4D70-9FA9-668A9767FBFA} + Core.Common.Gui + + + {F49BD8B2-332A-4C91-A196-8CCE0A2C7D98} + Core.Common.Utils + + + {D749EE4C-CE50-4C17-BF01-9A953028C126} + Core.Common.TestUtil + + + {2465cca1-c505-4827-9454-4fd5fd9194cd} + Core.Components.Charting.Forms + + + {516ebc95-b8f2-428c-b7f6-733f01bf8fdd} + Core.Components.Charting + + + {DADAA0A5-288C-49CB-9F08-337F16832C86} + Core.Components.OxyPlot.Forms + + + {E900A014-CA87-4374-87F0-813D653A9698} + Core.Components.Charting.TestUtil + + + {4163B996-3455-4324-A38A-9F2F0E6FCB52} + Core.Plugins.OxyPlot + True + + + + + \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Chart.Test/Legend/ChartDataCollectionTreeNodeInfoTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Chart.Test/Legend/ChartDataCollectionTreeNodeInfoTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Chart.Test/Legend/ChartDataCollectionTreeNodeInfoTest.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,294 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Collections.Generic; +using System.Linq; +using Core.Common.Base; +using Core.Common.Base.Geometry; +using Core.Common.Controls.TreeView; +using Core.Common.TestUtil; +using Core.Common.Utils.Reflection; +using Core.Components.Charting.Data; +using Core.Components.Charting.TestUtil; +using Core.Plugins.Chart.Legend; +using Core.Plugins.Chart.PresentationObjects; +using NUnit.Framework; +using Rhino.Mocks; +using GuiResources = Core.Common.Gui.Properties.Resources; + +namespace Core.Plugins.Chart.Test.Legend +{ + [TestFixture] + public class ChartDataCollectionTreeNodeInfoTest + { + private ChartLegendView chartLegendView; + private TreeNodeInfo info; + + [SetUp] + public void SetUp() + { + chartLegendView = new ChartLegendView(); + + TreeViewControl treeViewControl = TypeUtils.GetField(chartLegendView, "treeViewControl"); + Dictionary treeNodeInfoLookup = TypeUtils.GetField>(treeViewControl, "tagTypeTreeNodeInfoLookup"); + + info = treeNodeInfoLookup[typeof(ChartDataCollection)]; + } + + [TearDown] + public void TearDown() + { + chartLegendView.Dispose(); + } + + [Test] + public void Initialized_Always_ExpectedPropertiesSet() + { + // Assert + Assert.AreEqual(typeof(ChartDataCollection), info.TagType); + Assert.IsNull(info.ForeColor); + Assert.IsNull(info.ContextMenuStrip); + Assert.IsNull(info.EnsureVisibleOnCreate); + Assert.IsNull(info.CanRename); + Assert.IsNull(info.OnNodeRenamed); + Assert.IsNull(info.CanRemove); + Assert.IsNull(info.OnNodeRemoved); + Assert.IsNull(info.CanCheck); + Assert.IsNull(info.IsChecked); + Assert.IsNull(info.OnNodeChecked); + } + + [Test] + public void Text_Always_ReturnsNameFromChartData() + { + // Setup + var chartDataCollection = new ChartDataCollection(new List(), "test data"); + + // Call + var text = info.Text(chartDataCollection); + + // Assert + Assert.AreEqual(chartDataCollection.Name, text); + } + + [Test] + public void Image_Always_ReturnsSetImage() + { + // Setup + var chartDataCollection = new ChartDataCollection(new List(), "test data"); + + // Call + var image = info.Image(chartDataCollection); + + // Assert + TestHelper.AssertImagesAreEqual(GuiResources.folder, image); + } + + [Test] + public void ChildNodeObjects_Always_ReturnsChildsWithContextAndDataReversed() + { + // Setup + TestChartData chartData1 = new TestChartData(); + TestChartData chartData2 = new TestChartData(); + TestChartData chartData3 = new TestChartData(); + ChartDataCollection chartDataCollection = new ChartDataCollection(new List + { + chartData1, + chartData2, + chartData3 + }, "test data"); + + // Call + var objects = info.ChildNodeObjects(chartDataCollection); + + // Assert + var expectedChilds = new[] + { + new ChartDataContext(chartData3, new ChartDataCollection(new ChartData[0], "test")), + new ChartDataContext(chartData2, new ChartDataCollection(new ChartData[0], "test")), + new ChartDataContext(chartData1, new ChartDataCollection(new ChartData[0], "test")), + }; + CollectionAssert.AreEqual(expectedChilds, objects); + } + + [Test] + public void CanDrop_TargetParentIsSameAsSourceParent_ReturnsTrue() + { + // Setup + ChartData chartData = new TestChartData(); + ChartDataCollection chartDataCollection = new ChartDataCollection(new ChartData[0], "test"); + + ChartDataContext context = GetContext(chartData, chartDataCollection); + + // Call + bool canDrop = info.CanDrop(context, chartDataCollection); + + // Assert + Assert.IsTrue(canDrop); + } + + [Test] + public void CanDrop_TargetParentNotSameAsSourceParent_ReturnsFalse() + { + // Setup + ChartData chartData = new TestChartData(); + ChartDataCollection chartDataCollection = new ChartDataCollection(new ChartData[0], "test"); + + ChartDataContext context = GetContext(chartData, chartDataCollection); + + // Call + bool canDrop = info.CanDrop(context, GetContext(new ChartDataCollection(new ChartData[0], "test"))); + + // Assert + Assert.IsFalse(canDrop); + } + + [Test] + public void CanInsert_TargetParentIsSameAsSourceParent_ReturnsTrue() + { + // Setup + ChartData chartData = new TestChartData(); + ChartDataCollection chartDataCollection = new ChartDataCollection(new ChartData[0], "test"); + + ChartDataContext context = GetContext(chartData, chartDataCollection); + + // Call + bool canInsert = info.CanInsert(context, chartDataCollection); + + // Assert + Assert.IsTrue(canInsert); + } + + [Test] + public void CanInsert_TargetParentNotSameAsSourceParent_ReturnsFalse() + { + // Setup + ChartData chartData = new TestChartData(); + ChartDataCollection chartDataCollection = new ChartDataCollection(new ChartData[0], "test"); + + ChartDataContext context = GetContext(chartData, chartDataCollection); + + // Call + bool canInsert = info.CanInsert(context, GetContext(new ChartDataCollection(new ChartData[0], "test"))); + + // Assert + Assert.IsFalse(canInsert); + } + + [Test] + public void CanDrag_Always_ReturnsTrue() + { + // Call + var canInsert = info.CanDrag(null, null); + + // Assert + Assert.IsTrue(canInsert); + } + + [Test] + [TestCase(0)] + [TestCase(1)] + [TestCase(2)] + public void OnDrop_ChartDataMovedToPositionInsideRange_SetsNewReverseOrder(int position) + { + // Setup + var mocks = new MockRepository(); + var observer = mocks.StrictMock(); + observer.Expect(o => o.UpdateObserver()); + mocks.ReplayAll(); + + var chartData1 = new TestChartData(); + var chartData2 = new TestChartData(); + var chartData3 = new TestChartData(); + var chartDataCollection = new ChartDataCollection(new List + { + chartData1, + chartData2, + chartData3 + }, "test data"); + + var context1 = GetContext(chartData1); + + chartDataCollection.Attach(observer); + + using (var treeViewControl = new TreeViewControl()) + { + // Call + info.OnDrop(context1, chartDataCollection, chartDataCollection, position, treeViewControl); + + // Assert + var reversedIndex = 2 - position; + Assert.AreSame(context1.WrappedData, chartDataCollection.List.ElementAt(reversedIndex)); + + mocks.VerifyAll(); + } + } + + [Test] + [TestCase(-50)] + [TestCase(-1)] + [TestCase(4)] + [TestCase(50)] + public void OnDrop_ChartDataMovedToPositionOutsideRange_ThrowsException(int position) + { + // Setup + var mocks = new MockRepository(); + var observer = mocks.StrictMock(); + mocks.ReplayAll(); + + var chartData1 = new ChartLineData(Enumerable.Empty(), "line"); + var chartData2 = new ChartAreaData(Enumerable.Empty(), "area"); + var chartData3 = new ChartPointData(Enumerable.Empty(), "point"); + var chartData4 = new ChartMultipleAreaData(Enumerable.Empty>(), "multiple area"); + var chartDataCollection = new ChartDataCollection(new List + { + chartData1, + chartData2, + chartData3, + chartData4 + }, "test data"); + + chartDataCollection.Attach(observer); + chartLegendView.Data = chartDataCollection; + + var context1 = GetContext(chartData1); + + chartDataCollection.Attach(observer); + + using (var treeViewControl = new TreeViewControl()) + { + // Call + TestDelegate test = () => info.OnDrop(context1, chartDataCollection, chartDataCollection, position, treeViewControl); + + // Assert + Assert.Throws(test); + + mocks.VerifyAll(); // Expect no update observer. + } + } + + private static ChartDataContext GetContext(ChartData chartData, ChartDataCollection chartDataCollection = null) + { + return new ChartDataContext(chartData, chartDataCollection ?? new ChartDataCollection(new List(), "test")); + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Chart.Test/Legend/ChartDataContextTreeNodeInfoTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Chart.Test/Legend/ChartDataContextTreeNodeInfoTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Chart.Test/Legend/ChartDataContextTreeNodeInfoTest.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,498 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using Core.Common.Base; +using Core.Common.Base.Geometry; +using Core.Common.Controls.TreeView; +using Core.Common.TestUtil; +using Core.Common.Utils.Reflection; +using Core.Components.Charting.Data; +using Core.Components.Charting.TestUtil; +using Core.Plugins.Chart.Legend; +using Core.Plugins.Chart.PresentationObjects; +using Core.Plugins.Chart.Properties; +using NUnit.Framework; +using Rhino.Mocks; +using GuiResources = Core.Common.Gui.Properties.Resources; + +namespace Core.Plugins.Chart.Test.Legend +{ + [TestFixture] + public class ChartDataContextTreeNodeInfoTest + { + private ChartLegendView chartLegendView; + private TreeNodeInfo info; + + [SetUp] + public void SetUp() + { + chartLegendView = new ChartLegendView(); + + TreeViewControl treeViewControl = TypeUtils.GetField(chartLegendView, "treeViewControl"); + Dictionary treeNodeInfoLookup = TypeUtils.GetField>(treeViewControl, "tagTypeTreeNodeInfoLookup"); + + info = treeNodeInfoLookup[typeof(ChartDataContext)]; + } + + [TearDown] + public void TearDown() + { + chartLegendView.Dispose(); + } + + [Test] + public void Initialized_Always_ExpectedPropertiesSet() + { + // Assert + Assert.AreEqual(typeof(ChartDataContext), info.TagType); + Assert.IsNull(info.ForeColor); + Assert.IsNull(info.ContextMenuStrip); + Assert.IsNull(info.EnsureVisibleOnCreate); + Assert.IsNull(info.CanRename); + Assert.IsNull(info.OnNodeRenamed); + Assert.IsNull(info.CanRemove); + Assert.IsNull(info.OnNodeRemoved); + } + + [Test] + public void Text_Always_ReturnsNameFromWrappedChartData() + { + // Setup + ChartDataContext context = GetContext(new TestChartData()); + + // Call + string text = info.Text(context); + + // Assert + Assert.AreEqual(context.WrappedData.Name, text); + } + + [Test] + [TestCaseSource("ChartDataLegendImages")] + public void Image_WrappedDataChartPointData_ReturnPointsIcon(ChartData chartData, Image expectedImage) + { + // Setup + ChartDataContext context = GetContext(chartData); + + // Call + Image image = info.Image(context); + + // Assert + TestHelper.AssertImagesAreEqual(expectedImage, image); + } + + [Test] + public void ChildNodeObjects_ChartDataCollection_ReturnsItemsFromChartDataCollectionList() + { + // Setup + TestChartData chartData1 = new TestChartData(); + TestChartData chartData2 = new TestChartData(); + TestChartData chartData3 = new TestChartData(); + ChartDataCollection chartDataCollection = new ChartDataCollection(new List + { + chartData1, + chartData2, + chartData3 + }, "test data"); + ChartDataContext context = GetContext(chartDataCollection); + + // Call + var objects = info.ChildNodeObjects(context); + + // Assert + var expectedChilds = new[] + { + new ChartDataContext(chartData3, new ChartDataCollection(new ChartData[0], "test")), + new ChartDataContext(chartData2, new ChartDataCollection(new ChartData[0], "test")), + new ChartDataContext(chartData1, new ChartDataCollection(new ChartData[0], "test")), + }; + CollectionAssert.AreEqual(expectedChilds, objects); + } + + [Test] + [TestCaseSource("NoChartDataCollection")] + public void ChildNodeObjects_OtherThanChartDataCollection_ReturnsEmptyArray(ChartData chartData) + { + // Setup + ChartDataContext context = GetContext(chartData); + + // Call + var objects = info.ChildNodeObjects(context); + + // Assert + CollectionAssert.IsEmpty(objects); + } + + [Test] + public void CanDrag_WrappedDataChartMultipleAreaData_ReturnsFalse() + { + // Setup + ChartMultipleAreaData multipleChartAreaData = new ChartMultipleAreaData(new[] + { + Enumerable.Empty() + }, "test data"); + ChartDataContext context = GetContext(multipleChartAreaData); + + // Call + bool canDrag = info.CanDrag(context, null); + + // Assert + Assert.IsFalse(canDrag); + } + + [Test] + [TestCaseSource("DragChartData")] + public void CanDrag_WrappedDataOtherThanChartMultipleAreaData_ReturnsTrue(ChartData chartData) + { + // Setup + ChartDataContext context = GetContext(chartData); + + // Call + bool canDrag = info.CanDrag(context, null); + + // Assert + Assert.IsTrue(canDrag); + } + + [Test] + public void CanCheck_WrappedDataChartDataCollection_ReturnsFalse() + { + // Setup + ChartDataContext context = GetContext(new ChartDataCollection(new ChartData[0], "test data")); + + // Call + bool canCheck = info.CanCheck(context); + + // Assert + Assert.IsFalse(canCheck); + } + + [Test] + [TestCaseSource("NoChartDataCollection")] + public void CanCheck_WrappedDataOtherThanChartDataCollection_ReturnsTrue(ChartData chartData) + { + // Setup + ChartDataContext context = GetContext(chartData); + + // Call + bool canCheck = info.CanCheck(context); + + // Assert + Assert.IsTrue(canCheck); + } + + [Test] + [TestCaseSource("IsCheckedChartData")] + public void IsChecked_Always_ReturnsAccordingToVisibleStateOfChartData(ChartData chartData, bool isVisible) + { + // Setup + ChartDataContext context = GetContext(chartData); + context.WrappedData.IsVisible = isVisible; + + // Call + bool isChecked = info.IsChecked(context); + + // Assert + Assert.AreEqual(isVisible, isChecked); + } + + [Test] + [TestCaseSource("IsCheckedChartData")] + public void OnNodeChecked_Always_SetsPointDataVisibilityAndNotifiesParentObservers(ChartData chartData, bool initialVisibleState) + { + // Setup + var mocks = new MockRepository(); + var observer = mocks.StrictMock(); + observer.Expect(o => o.UpdateObserver()); + mocks.ReplayAll(); + + ChartDataContext context = GetContext(chartData); + context.WrappedData.IsVisible = initialVisibleState; + + context.WrappedData.Attach(observer); + + // Call + info.OnNodeChecked(context, null); + + // Assert + Assert.AreEqual(!initialVisibleState, context.WrappedData.IsVisible); + mocks.VerifyAll(); + } + + [Test] + public void CanDrop_TargetParentIsSameAsSourceParent_ReturnsTrue() + { + // Setup + ChartData chartData = new TestChartData(); + ChartData chartData2 = new TestChartData(); + ChartDataCollection chartDataCollection = new ChartDataCollection(new ChartData[0], "test"); + + ChartDataContext context = GetContext(chartData, chartDataCollection); + ChartDataContext targetContext = GetContext(chartData2, chartDataCollection); + + // Call + bool canDrop = info.CanDrop(context, targetContext); + + // Assert + Assert.IsTrue(canDrop); + } + + [Test] + public void CanDrop_TargetParentNotSameAsSourceParent_ReturnsFalse() + { + // Setup + ChartData chartData = new TestChartData(); + ChartData chartData2 = new TestChartData(); + + ChartDataContext context = GetContext(chartData); + ChartDataContext targetContext = GetContext(chartData2); + + // Call + bool canDrop = info.CanDrop(context, targetContext); + + // Assert + Assert.IsFalse(canDrop); + } + + [Test] + public void CanDrop_TargetDataIsCollection_ReturnsFalse() + { + // Setup + ChartData chartData = new TestChartData(); + ChartDataCollection rootCollection = new ChartDataCollection(new ChartData[0], "test"); + ChartDataCollection targetCollection = new ChartDataCollection(new ChartData[0], "test"); + + ChartDataContext context = GetContext(chartData, rootCollection); + ChartDataContext targetContext = GetContext(targetCollection, rootCollection); + + // Call + bool canDrop = info.CanDrop(context, targetContext); + + // Assert + Assert.IsFalse(canDrop); + } + + [Test] + public void CanInsert_TargetParentIsSameAsSourceParent_ReturnsTrue() + { + // Setup + ChartData chartData = new TestChartData(); + ChartData chartData2 = new TestChartData(); + ChartDataCollection chartDataCollection = new ChartDataCollection(new ChartData[0], "test"); + + ChartDataContext context = GetContext(chartData, chartDataCollection); + ChartDataContext targetContext = GetContext(chartData2, chartDataCollection); + + // Call + bool canInsert = info.CanInsert(context, targetContext); + + // Assert + Assert.IsTrue(canInsert); + } + + [Test] + public void CanInsert_TargetParentNotSameAsSourceParent_ReturnsFalse() + { + // Setup + ChartData chartData = new TestChartData(); + ChartData chartData2 = new TestChartData(); + + ChartDataContext context = GetContext(chartData); + ChartDataContext targetContext = GetContext(chartData2); + + // Call + bool canInsert = info.CanInsert(context, targetContext); + + // Assert + Assert.IsFalse(canInsert); + } + + [Test] + public void CanInsert_TargetDataIsCollection_ReturnsFalse() + { + // Setup + ChartData chartData = new TestChartData(); + ChartDataCollection rootCollection = new ChartDataCollection(new ChartData[0], "test"); + ChartDataCollection targetCollection = new ChartDataCollection(new ChartData[0], "test"); + + ChartDataContext context = GetContext(chartData, rootCollection); + ChartDataContext targetContext = GetContext(targetCollection, rootCollection); + + // Call + bool canDrop = info.CanInsert(context, targetContext); + + // Assert + Assert.IsFalse(canDrop); + } + + [Test] + [TestCase(0)] + [TestCase(1)] + [TestCase(2)] + public void OnDrop_ChartDataMovedToPositionInsideRange_SetsNewReverseOrder(int position) + { + // Setup + var mocks = new MockRepository(); + var observer = mocks.StrictMock(); + observer.Expect(o => o.UpdateObserver()); + mocks.ReplayAll(); + + var chartData1 = new TestChartData(); + var chartData2 = new TestChartData(); + var chartData3 = new TestChartData(); + var chartDataCollection = new ChartDataCollection(new List + { + chartData1, + chartData2, + chartData3 + }, "test data"); + + var context1 = GetContext(chartData1); + var collectionContext = GetContext(chartDataCollection); + + chartDataCollection.Attach(observer); + + using (var treeViewControl = new TreeViewControl()) + { + // Call + info.OnDrop(context1, collectionContext, collectionContext, position, treeViewControl); + + // Assert + var reversedIndex = 2 - position; + ChartDataCollection wrappedCollectionData = (ChartDataCollection)collectionContext.WrappedData; + Assert.AreSame(context1.WrappedData, wrappedCollectionData.List.ElementAt(reversedIndex)); + + mocks.VerifyAll(); + } + } + + [Test] + [TestCase(-50)] + [TestCase(-1)] + [TestCase(4)] + [TestCase(50)] + public void OnDrop_ChartDataMovedToPositionOutsideRange_ThrowsException(int position) + { + // Setup + var mocks = new MockRepository(); + var observer = mocks.StrictMock(); + mocks.ReplayAll(); + + var chartData1 = new ChartLineData(Enumerable.Empty(), "line"); + var chartData2 = new ChartAreaData(Enumerable.Empty(), "area"); + var chartData3 = new ChartPointData(Enumerable.Empty(), "point"); + var chartData4 = new ChartMultipleAreaData(Enumerable.Empty>(), "multiple area"); + var chartDataCollection = new ChartDataCollection(new List + { + chartData1, + chartData2, + chartData3, + chartData4 + }, "test data"); + + chartDataCollection.Attach(observer); + chartLegendView.Data = chartDataCollection; + + var context1 = GetContext(chartData1); + var collectionContext = GetContext(chartDataCollection); + + chartDataCollection.Attach(observer); + + using (var treeViewControl = new TreeViewControl()) + { + // Call + TestDelegate test = () => info.OnDrop(context1, collectionContext, collectionContext, position, treeViewControl); + + // Assert + Assert.Throws(test); + + mocks.VerifyAll(); // Expect no update observer. + } + } + + private static ChartDataContext GetContext(ChartData chartData, ChartDataCollection chartDataCollection = null) + { + return new ChartDataContext(chartData, chartDataCollection ?? new ChartDataCollection(new List(), "test")); + } + + private static IEnumerable ChartDataLegendImages + { + get + { + yield return new TestCaseData(new ChartPointData(Enumerable.Empty(), "test"), Resources.PointsIcon); + yield return new TestCaseData(new ChartLineData(Enumerable.Empty(), "test"), Resources.LineIcon); + yield return new TestCaseData(new ChartAreaData(Enumerable.Empty(), "test"), Resources.AreaIcon); + yield return new TestCaseData(new ChartMultipleAreaData(new[] { Enumerable.Empty() }, "test data"), Resources.AreaIcon); + yield return new TestCaseData(new ChartDataCollection(new ChartData[0], "test"), GuiResources.folder); + } + } + + private static IEnumerable DragChartData + { + get + { + return new ChartData[] + { + new ChartPointData(Enumerable.Empty(), "test"), + new ChartLineData(Enumerable.Empty(), "test"), + new ChartAreaData(Enumerable.Empty(), "Test"), + new ChartDataCollection(new ChartData[0], "test") + }; + } + } + + private static IEnumerable NoChartDataCollection + { + get + { + return new ChartData[] + { + new ChartPointData(Enumerable.Empty(), "test"), + new ChartLineData(Enumerable.Empty(), "test"), + new ChartAreaData(Enumerable.Empty(), "Test"), + new ChartMultipleAreaData(new[] + { + Enumerable.Empty() + }, "test data") + }; + } + } + + private static IEnumerable IsCheckedChartData + { + get + { + yield return new TestCaseData(new ChartPointData(Enumerable.Empty(), "test"), false); + yield return new TestCaseData(new ChartPointData(Enumerable.Empty(), "test"), true); + yield return new TestCaseData(new ChartLineData(Enumerable.Empty(), "test"), false); + yield return new TestCaseData(new ChartLineData(Enumerable.Empty(), "test"), true); + yield return new TestCaseData(new ChartAreaData(Enumerable.Empty(), "test"), false); + yield return new TestCaseData(new ChartAreaData(Enumerable.Empty(), "test"), true); + yield return new TestCaseData(new ChartMultipleAreaData(new[] { Enumerable.Empty() }, "test data"), false); + yield return new TestCaseData(new ChartMultipleAreaData(new[] { Enumerable.Empty() }, "test data"), true); + } + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Chart.Test/Legend/ChartLegendControllerTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Chart.Test/Legend/ChartLegendControllerTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Chart.Test/Legend/ChartLegendControllerTest.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,145 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Collections.Generic; +using Core.Common.Controls.Views; +using Core.Common.Gui; +using Core.Common.Gui.Forms.ViewHost; +using Core.Plugins.Chart.Legend; +using NUnit.Framework; +using Rhino.Mocks; + +namespace Core.Plugins.Chart.Test.Legend +{ + [TestFixture] + public class ChartLegendControllerTest + { + [Test] + public void Constructor_WithoutPlugin_ThrowsArgumentNullException() + { + // Call + TestDelegate test = () => new ChartLegendController(null); + + // Assert + Assert.Throws(test); + } + + [Test] + public void Constructor_WithViewController_DoesNotThrow() + { + // Setup + var mocks = new MockRepository(); + var viewController = mocks.StrictMock(); + + mocks.ReplayAll(); + + // Call + TestDelegate test = () => new ChartLegendController(viewController); + + // Assert + Assert.DoesNotThrow(test); + mocks.VerifyAll(); + } + + [Test] + [TestCase(true)] + [TestCase(false)] + public void IsLegendViewOpen_LegendViewOpenAndClosedState_ReturnsExpectedState(bool open) + { + // Setup + var mocks = new MockRepository(); + var viewController = mocks.StrictMock(); + + if (open) + { + var viewHost = mocks.Stub(); + var toolViewList = new List(); + + viewController.Stub(tvc => tvc.ViewHost).Return(viewHost); + viewHost.Stub(vm => vm.ToolViews).Return(toolViewList); + viewHost.Expect(vm => vm.AddToolView(Arg.Matches(c => true), Arg.Matches(vl => vl == ToolViewLocation.Left))).WhenCalled(invocation => + { + toolViewList.Add(invocation.Arguments[0] as ChartLegendView); + }); + viewHost.Expect(vm => vm.SetImage(null, null)).IgnoreArguments(); + } + + mocks.ReplayAll(); + + var controller = new ChartLegendController(viewController); + + if (open) + { + controller.ToggleView(); + } + + // Call + var result = controller.IsLegendViewOpen; + + // Assert + Assert.AreEqual(open, result); + mocks.VerifyAll(); + } + + [Test] + [TestCase(true)] + [TestCase(false)] + public void ToggleLegendView_LegendViewOpenAndClosedState_TogglesStateOfLegendView(bool open) + { + // Setup + var mocks = new MockRepository(); + var viewController = mocks.StrictMock(); + var viewHost = mocks.StrictMock(); + + viewController.Stub(tvc => tvc.ViewHost).Return(viewHost); + viewHost.Stub(tvc => tvc.SetImage(null, null)).IgnoreArguments(); + + var toolViewList = new List(); + viewController.Stub(tvc => tvc.ViewHost).Return(viewHost); + viewHost.Stub(vm => vm.ToolViews).Return(toolViewList); + viewHost.Expect(vm => vm.AddToolView(Arg.Matches(c => true), Arg.Matches(vl => vl == ToolViewLocation.Left))).WhenCalled(invocation => + { + toolViewList.Add(invocation.Arguments[0] as ChartLegendView); + }); + + if (open) + { + viewHost.Expect(p => p.Remove(Arg.Matches(c => true))); + } + + mocks.ReplayAll(); + + var controller = new ChartLegendController(viewController); + + if (open) + { + controller.ToggleView(); + } + + // Call + controller.ToggleView(); + + // Assert + mocks.VerifyAll(); + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Chart.Test/Legend/ChartLegendViewTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Chart.Test/Legend/ChartLegendViewTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Chart.Test/Legend/ChartLegendViewTest.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,139 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; +using Core.Common.Base.Geometry; +using Core.Common.Controls.TreeView; +using Core.Common.Controls.Views; +using Core.Common.Utils.Reflection; +using Core.Components.Charting.Data; +using Core.Plugins.Chart.Legend; +using Core.Plugins.Chart.PresentationObjects; +using Core.Plugins.Chart.Properties; +using NUnit.Framework; + +namespace Core.Plugins.Chart.Test.Legend +{ + [TestFixture] + public class ChartLegendViewTest + { + [Test] + public void DefaultConstructor_CreatesUserControl() + { + // Call + using (var view = new ChartLegendView()) + { + // Assert + Assert.IsInstanceOf(view); + Assert.IsInstanceOf(view); + Assert.IsNull(view.Data); + Assert.AreEqual(Resources.General_Chart, view.Text); + } + } + + [Test] + public void Data_ChartControl_DataSet() + { + // Setup + using (var view = new ChartLegendView()) + { + var chartDataCollection = new ChartDataCollection(new List(), "test data"); + + // Call + view.Data = chartDataCollection; + + // Assert + Assert.AreSame(chartDataCollection, view.Data); + } + } + + [Test] + public void Data_ForNull_NullSet() + { + // Setup + using (var view = new ChartLegendView()) + { + // Call + view.Data = null; + + // Assert + Assert.IsNull(view.Data); + } + } + + [Test] + public void Data_OtherObject_ThrowsInvalidCastException() + { + // Setup + using (var view = new ChartLegendView()) + { + // Call + TestDelegate test = () => view.Data = new object(); + + // Assert + Assert.Throws(test); + } + } + + [Test] + [TestCase(0)] + [TestCase(1)] + [TestCase(2)] + public void GivenChartDataContainingCollection_WhenDragDroppingFromRootToRoot_ThenDataPositionChanged(int index) + { + // Given + var chartLineData = CreateChartLineData(); + + var rootCollection = new ChartDataCollection(new List + { + chartLineData, + CreateChartLineData(), + CreateChartLineData() + }, "test data"); + + using (var chartLegendView = new ChartLegendView + { + Data = rootCollection + }) + { + TreeViewControl treeViewControl = TypeUtils.GetField(chartLegendView, "treeViewControl"); + Dictionary treeNodeInfoLookup = TypeUtils.GetField>(treeViewControl, "tagTypeTreeNodeInfoLookup"); + var info = treeNodeInfoLookup[typeof(ChartDataCollection)]; + + var context = new ChartDataContext(chartLineData, rootCollection); + + // When + info.OnDrop(context, rootCollection, rootCollection, index, treeViewControl); + + // Then + Assert.AreEqual(2 - index, rootCollection.List.IndexOf(chartLineData)); + } + } + + private ChartData CreateChartLineData() + { + return new ChartLineData(Enumerable.Empty(), "some name"); + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Chart.Test/PresentationObjects/ChartDataContextTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Chart.Test/PresentationObjects/ChartDataContextTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Chart.Test/PresentationObjects/ChartDataContextTest.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,59 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using Core.Components.Charting.Data; +using Core.Components.Charting.TestUtil; +using Core.Plugins.Chart.PresentationObjects; +using NUnit.Framework; + +namespace Core.Plugins.Chart.Test.PresentationObjects +{ + [TestFixture] + public class ChartDataContextTest + { + [Test] + public void ParameteredConstructor_ExpectedValues() + { + // Setup + ChartData data = new TestChartData(); + ChartDataCollection collection = new ChartDataCollection(new [] { data }, "test"); + + // Call + ChartDataContext context = new ChartDataContext(data, collection); + + // Assert + Assert.AreSame(data, context.WrappedData); + Assert.AreSame(collection, context.ParentChartData); + } + + [Test] + public void ParameteredConstructor_ParentChartDataNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => new ChartDataContext(new TestChartData(), null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("parentChartData", exception.ParamName); + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Chart.Test/Properties/AssemblyInfo.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Chart.Test/Properties/AssemblyInfo.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Chart.Test/Properties/AssemblyInfo.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,34 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System.Reflection; +using System.Runtime.InteropServices; + +[assembly: AssemblyTitle("Core.Plugins.Chart.Test")] +[assembly: AssemblyProduct("Core.Plugins.Chart.Test")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("5b5d3afc-316c-44e9-90ba-4b55cfa074f8")] Index: Core/Plugins/test/Core.Plugins.Chart.Test/TestChartView.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Chart.Test/TestChartView.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Chart.Test/TestChartView.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,43 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System.Windows.Forms; +using Core.Components.Charting.Forms; +using Core.Components.OxyPlot.Forms; + +namespace Core.Plugins.Chart.Test +{ + /// + /// Simple implementation which can be used in tests. + /// + public class TestChartView : Control, IChartView + { + public object Data { get; set; } + + public IChartControl Chart + { + get + { + return (ChartControl) Data; + } + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Chart.Test/TestView.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Chart.Test/TestView.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Chart.Test/TestView.cs (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,34 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System.Windows.Forms; +using Core.Common.Controls.Views; + +namespace Core.Plugins.Chart.Test +{ + /// + /// Simple implementation which can be used in tests. + /// + public class TestView : Control, IView + { + public object Data { get; set; } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Chart.Test/packages.config =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Chart.Test/packages.config (revision 0) +++ Core/Plugins/test/Core.Plugins.Chart.Test/packages.config (revision 31d4921763c045040f9300542aed356147966cc8) @@ -0,0 +1,29 @@ + + + + + + + + \ No newline at end of file Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.OxyPlot.Test/ChartingRibbonTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.OxyPlot.Test/Commands/ToggleLegendViewCommandTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.OxyPlot.Test/Core.Plugins.OxyPlot.Test.csproj'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.OxyPlot.Test/Legend/ChartDataCollectionTreeNodeInfoTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.OxyPlot.Test/Legend/ChartDataContextTreeNodeInfoTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.OxyPlot.Test/Legend/ChartLegendControllerTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.OxyPlot.Test/Legend/ChartLegendViewTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.OxyPlot.Test/OxyPlotPluginTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.OxyPlot.Test/PresentationObjects/ChartDataContextTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.OxyPlot.Test/Properties/AssemblyInfo.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.OxyPlot.Test/TestChartView.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.OxyPlot.Test/TestView.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 31d4921763c045040f9300542aed356147966cc8 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.OxyPlot.Test/packages.config'. Fisheye: No comparison available. Pass `N' to diff? Index: Demo/Ringtoets/src/Demo.Ringtoets/Demo.Ringtoets.csproj =================================================================== diff -u -r1f0be1a4230b2ef4f2382feb75e425d4fb51d083 -r31d4921763c045040f9300542aed356147966cc8 --- Demo/Ringtoets/src/Demo.Ringtoets/Demo.Ringtoets.csproj (.../Demo.Ringtoets.csproj) (revision 1f0be1a4230b2ef4f2382feb75e425d4fb51d083) +++ Demo/Ringtoets/src/Demo.Ringtoets/Demo.Ringtoets.csproj (.../Demo.Ringtoets.csproj) (revision 31d4921763c045040f9300542aed356147966cc8) @@ -117,10 +117,9 @@ Core.Components.OxyPlot.Forms False - + {4163B996-3455-4324-A38A-9F2F0E6FCB52} - Core.Plugins.OxyPlot - False + Core.Plugins.Chart {d4200f43-3f72-4f42-af0a-8ced416a38ec} Index: Demo/Ringtoets/src/Demo.Ringtoets/GUIs/DemoProjectPlugin.cs =================================================================== diff -u -r1f0be1a4230b2ef4f2382feb75e425d4fb51d083 -r31d4921763c045040f9300542aed356147966cc8 --- Demo/Ringtoets/src/Demo.Ringtoets/GUIs/DemoProjectPlugin.cs (.../DemoProjectPlugin.cs) (revision 1f0be1a4230b2ef4f2382feb75e425d4fb51d083) +++ Demo/Ringtoets/src/Demo.Ringtoets/GUIs/DemoProjectPlugin.cs (.../DemoProjectPlugin.cs) (revision 31d4921763c045040f9300542aed356147966cc8) @@ -2,7 +2,7 @@ using Core.Common.Gui.Forms; using Core.Common.Gui.Plugin; using Core.Components.Charting.Data; -using Core.Plugins.OxyPlot.Properties; +using Core.Plugins.Chart.Properties; using Demo.Ringtoets.Ribbons; using Demo.Ringtoets.Views; Index: Ringtoets.sln =================================================================== diff -u -r9c353f447a743d39b5294a600cd61c305ba08356 -r31d4921763c045040f9300542aed356147966cc8 --- Ringtoets.sln (.../Ringtoets.sln) (revision 9c353f447a743d39b5294a600cd61c305ba08356) +++ Ringtoets.sln (.../Ringtoets.sln) (revision 31d4921763c045040f9300542aed356147966cc8) @@ -190,10 +190,6 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Components.OxyPlot.Test", "Core\Components\test\Core.Components.OxyPlot.Test\Core.Components.OxyPlot.Test.csproj", "{4BB4D2AA-332E-42D6-8D34-FFABBCE1F1D8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Plugins.OxyPlot", "Core\Plugins\src\Core.Plugins.OxyPlot\Core.Plugins.OxyPlot.csproj", "{4163B996-3455-4324-A38A-9F2F0E6FCB52}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Plugins.OxyPlot.Test", "Core\Plugins\test\Core.Plugins.OxyPlot.Test\Core.Plugins.OxyPlot.Test.csproj", "{45EF3071-5C30-40AA-8B99-CE174DCEEE48}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Ringtoets", "Ringtoets", "{85F88AB0-CA03-48D3-B5A0-DF0848C24AB0}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{39EB5D07-C076-484C-9621-B34C4E5BF64C}" @@ -374,6 +370,10 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Application.Ringtoets.Test", "Application\Ringtoets\test\Application.Ringtoets.Test\Application.Ringtoets.Test.csproj", "{A2451981-99DA-4605-8396-F2222D25EBB7}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Plugins.Chart", "Core\Plugins\src\Core.Plugins.Chart\Core.Plugins.Chart.csproj", "{4163B996-3455-4324-A38A-9F2F0E6FCB52}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Plugins.Chart.Test", "Core\Plugins\test\Core.Plugins.Chart.Test\Core.Plugins.Chart.Test.csproj", "{45EF3071-5C30-40AA-8B99-CE174DCEEE48}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution CreateInstaller|x86 = CreateInstaller|x86 @@ -816,24 +816,6 @@ {4BB4D2AA-332E-42D6-8D34-FFABBCE1F1D8}.Release|x86.Build.0 = Release|x86 {4BB4D2AA-332E-42D6-8D34-FFABBCE1F1D8}.ReleaseForCodeCoverage|x86.ActiveCfg = ReleaseForCodeCoverage|x86 {4BB4D2AA-332E-42D6-8D34-FFABBCE1F1D8}.ReleaseForCodeCoverage|x86.Build.0 = ReleaseForCodeCoverage|x86 - {4163B996-3455-4324-A38A-9F2F0E6FCB52}.CreateInstaller|x86.ActiveCfg = Release|x86 - {4163B996-3455-4324-A38A-9F2F0E6FCB52}.CreateInstaller|x86.Build.0 = Release|x86 - {4163B996-3455-4324-A38A-9F2F0E6FCB52}.CreateInstallerWithDemoProject|x86.ActiveCfg = Release|x86 - {4163B996-3455-4324-A38A-9F2F0E6FCB52}.CreateInstallerWithDemoProject|x86.Build.0 = Release|x86 - {4163B996-3455-4324-A38A-9F2F0E6FCB52}.Debug|x86.ActiveCfg = Debug|x86 - {4163B996-3455-4324-A38A-9F2F0E6FCB52}.Debug|x86.Build.0 = Debug|x86 - {4163B996-3455-4324-A38A-9F2F0E6FCB52}.Release|x86.ActiveCfg = Release|x86 - {4163B996-3455-4324-A38A-9F2F0E6FCB52}.Release|x86.Build.0 = Release|x86 - {4163B996-3455-4324-A38A-9F2F0E6FCB52}.ReleaseForCodeCoverage|x86.ActiveCfg = ReleaseForCodeCoverage|x86 - {4163B996-3455-4324-A38A-9F2F0E6FCB52}.ReleaseForCodeCoverage|x86.Build.0 = ReleaseForCodeCoverage|x86 - {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.CreateInstaller|x86.ActiveCfg = Release|x86 - {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.CreateInstallerWithDemoProject|x86.ActiveCfg = Release|x86 - {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.Debug|x86.ActiveCfg = Debug|x86 - {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.Debug|x86.Build.0 = Debug|x86 - {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.Release|x86.ActiveCfg = Release|x86 - {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.Release|x86.Build.0 = Release|x86 - {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.ReleaseForCodeCoverage|x86.ActiveCfg = ReleaseForCodeCoverage|x86 - {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.ReleaseForCodeCoverage|x86.Build.0 = ReleaseForCodeCoverage|x86 {50963F12-448C-41BA-A62C-CDB0AB8D21E0}.CreateInstaller|x86.ActiveCfg = Release|x86 {50963F12-448C-41BA-A62C-CDB0AB8D21E0}.CreateInstaller|x86.Build.0 = Release|x86 {50963F12-448C-41BA-A62C-CDB0AB8D21E0}.CreateInstallerWithDemoProject|x86.ActiveCfg = Release|x86 @@ -1489,6 +1471,26 @@ {A2451981-99DA-4605-8396-F2222D25EBB7}.Release|x86.Build.0 = Release|x86 {A2451981-99DA-4605-8396-F2222D25EBB7}.ReleaseForCodeCoverage|x86.ActiveCfg = ReleaseForCodeCoverage|x86 {A2451981-99DA-4605-8396-F2222D25EBB7}.ReleaseForCodeCoverage|x86.Build.0 = ReleaseForCodeCoverage|x86 + {4163B996-3455-4324-A38A-9F2F0E6FCB52}.CreateInstaller|x86.ActiveCfg = ReleaseForCodeCoverage|x86 + {4163B996-3455-4324-A38A-9F2F0E6FCB52}.CreateInstaller|x86.Build.0 = ReleaseForCodeCoverage|x86 + {4163B996-3455-4324-A38A-9F2F0E6FCB52}.CreateInstallerWithDemoProject|x86.ActiveCfg = ReleaseForCodeCoverage|x86 + {4163B996-3455-4324-A38A-9F2F0E6FCB52}.CreateInstallerWithDemoProject|x86.Build.0 = ReleaseForCodeCoverage|x86 + {4163B996-3455-4324-A38A-9F2F0E6FCB52}.Debug|x86.ActiveCfg = Debug|x86 + {4163B996-3455-4324-A38A-9F2F0E6FCB52}.Debug|x86.Build.0 = Debug|x86 + {4163B996-3455-4324-A38A-9F2F0E6FCB52}.Release|x86.ActiveCfg = Release|x86 + {4163B996-3455-4324-A38A-9F2F0E6FCB52}.Release|x86.Build.0 = Release|x86 + {4163B996-3455-4324-A38A-9F2F0E6FCB52}.ReleaseForCodeCoverage|x86.ActiveCfg = ReleaseForCodeCoverage|x86 + {4163B996-3455-4324-A38A-9F2F0E6FCB52}.ReleaseForCodeCoverage|x86.Build.0 = ReleaseForCodeCoverage|x86 + {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.CreateInstaller|x86.ActiveCfg = ReleaseForCodeCoverage|x86 + {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.CreateInstaller|x86.Build.0 = ReleaseForCodeCoverage|x86 + {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.CreateInstallerWithDemoProject|x86.ActiveCfg = ReleaseForCodeCoverage|x86 + {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.CreateInstallerWithDemoProject|x86.Build.0 = ReleaseForCodeCoverage|x86 + {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.Debug|x86.ActiveCfg = Debug|x86 + {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.Debug|x86.Build.0 = Debug|x86 + {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.Release|x86.ActiveCfg = Release|x86 + {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.Release|x86.Build.0 = Release|x86 + {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.ReleaseForCodeCoverage|x86.ActiveCfg = ReleaseForCodeCoverage|x86 + {45EF3071-5C30-40AA-8B99-CE174DCEEE48}.ReleaseForCodeCoverage|x86.Build.0 = ReleaseForCodeCoverage|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1531,12 +1533,12 @@ {E23513DE-B7D0-4415-BCDF-5A33CD084388} = {0D9858E1-CF2D-4DE5-AC0E-64401900D531} {93E73FAB-FAE8-49C6-9ABB-27D24DF761F6} = {4B4F0984-5730-4E28-93E7-DDE0F29BA550} {ED20DBA9-D577-423F-A68D-A0A8130FB10B} = {4B4F0984-5730-4E28-93E7-DDE0F29BA550} - {4163B996-3455-4324-A38A-9F2F0E6FCB52} = {4B4F0984-5730-4E28-93E7-DDE0F29BA550} {610E0A9C-1997-4C43-A10E-39D4C66ADA93} = {4B4F0984-5730-4E28-93E7-DDE0F29BA550} + {4163B996-3455-4324-A38A-9F2F0E6FCB52} = {4B4F0984-5730-4E28-93E7-DDE0F29BA550} {8BD31773-6F6D-42EE-810D-0A5DAD809F9D} = {209AC67F-DCFA-4355-B45A-9D9A2E4593D2} {07206938-9671-4DC7-BDE4-35B0F6E20DBC} = {209AC67F-DCFA-4355-B45A-9D9A2E4593D2} - {45EF3071-5C30-40AA-8B99-CE174DCEEE48} = {209AC67F-DCFA-4355-B45A-9D9A2E4593D2} {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7} = {209AC67F-DCFA-4355-B45A-9D9A2E4593D2} + {45EF3071-5C30-40AA-8B99-CE174DCEEE48} = {209AC67F-DCFA-4355-B45A-9D9A2E4593D2} {0590D3BB-EB3E-4B53-BD64-1725E1CBB1F4} = {041EDC04-3A1E-4FBA-BEB7-F391571C609F} {B5F4F5A5-FD36-405D-ABA1-56C270207C8F} = {041EDC04-3A1E-4FBA-BEB7-F391571C609F} {4D840673-3812-4338-A352-84854E32B8A0} = {0590D3BB-EB3E-4B53-BD64-1725E1CBB1F4}