Index: Application/Ringtoets/src/Application.Ringtoets.Setup/Licentie.rtf =================================================================== diff -u -r31d4921763c045040f9300542aed356147966cc8 -rc5717eada81586126cbf53266abb0fc925382393 --- Application/Ringtoets/src/Application.Ringtoets.Setup/Licentie.rtf (.../Licentie.rtf) (revision 31d4921763c045040f9300542aed356147966cc8) +++ Application/Ringtoets/src/Application.Ringtoets.Setup/Licentie.rtf (.../Licentie.rtf) (revision c5717eada81586126cbf53266abb0fc925382393) @@ -1,6 +1,6 @@ {\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;}{\f43\fbidi \fnil\fcharset134\fprq2{\*\panose 00000000000000000000}@SimSun;} +{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f43\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@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 ???????????????????????????????};} @@ -45,13 +45,13 @@ \sbasedon10 \slink19 \slocked \ssemihidden \styrsid7675473 Balloon Text Char;}{\s21\ql \li720\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\contextualspace \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang2057\langfe2052\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext21 \sqformat \spriority34 \styrsid1010843 List Paragraph;}}{\*\rsidtbl \rsid23861\rsid423640\rsid488029\rsid799973\rsid984897\rsid1010843 \rsid1055020\rsid1135803\rsid1180769\rsid1201894\rsid1206572\rsid1391986\rsid1582918\rsid1604777\rsid1800570\rsid1862769\rsid1918796\rsid2112962\rsid2185294\rsid2448324\rsid2521833\rsid2703580\rsid2906174\rsid3020322\rsid3093214\rsid3172558\rsid3241544 -\rsid3426710\rsid3474088\rsid3612330\rsid3686156\rsid4150084\rsid4392039\rsid4733976\rsid4742281\rsid5064623\rsid5267739\rsid5457331\rsid5593428\rsid5862844\rsid5910193\rsid6122838\rsid6624093\rsid6822061\rsid6904447\rsid6947589\rsid7414554\rsid7672292 -\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\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 +\rsid3426710\rsid3474088\rsid3612330\rsid3686156\rsid4150084\rsid4392039\rsid4733976\rsid4742281\rsid4987021\rsid5064623\rsid5267739\rsid5457331\rsid5593428\rsid5862844\rsid5910193\rsid6122838\rsid6624093\rsid6822061\rsid6904447\rsid6947589\rsid7414554 +\rsid7672292\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\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\hr13\min28}{\printim\yr2016\mo1\dy13\hr13\min29}{\version53}{\edmins67}{\nofpages3}{\nofwords961} +{\nofchars5483}{\*\company Stichting Deltares}{\nofcharsws6432}{\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 @@ -185,12 +185,13 @@ \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 +Chart.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\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\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 +\af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid11865015\charrsid16612758 \hich\af2\dbch\af31505\loch\f2 Core.Plugins.}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid4987021 +\hich\af2\dbch\af31505\loch\f2 Map}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\lang1043\langfe2052\langnp1043\insrsid11865015\charrsid16612758 \hich\af2\dbch\af31505\loch\f2 .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 @@ -238,7 +239,7 @@ \par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid11011627 \hich\af2\dbch\af31505\loch\f2 14}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid10959533 \hich\af2\dbch\af31505\loch\f2 . Ringtoets.HeightStructures.Forms.dll \par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid11011627 \hich\af2\dbch\af31505\loch\f2 15}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid10959533 \hich\af2\dbch\af31505\loch\f2 . Ringtoets.HeightStructures.IO.dll \par }\pard \ltrpar\ql \fi-360\li1215\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin1215\itap0\pararsid10959533 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid11011627 \hich\af2\dbch\af31505\loch\f2 16}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 -\f2\fs21\insrsid10959533 \hich\af2\dbch\af31505\loch\f2 . Ringtoets.HeightStructures.Plugin.dll +\f2\fs21\insrsid10959533 \hich\af2\dbch\af31505\loch\f2 . Ringtoets.HeightStructures.Plugin\hich\af2\dbch\af31505\loch\f2 .dll \par }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid11011627 \hich\af2\dbch\af31505\loch\f2 17}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid10959533 \hich\af2\dbch\af31505\loch\f2 . Ringtoets.HeightStructures.Service.dll \par }\pard \ltrpar\ql \fi-360\li1215\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin1215\itap0\pararsid15600639 {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid1582918 \hich\af2\dbch\af31505\loch\f2 1}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid11011627 \hich\af2\dbch\af31505\loch\f2 8}{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid2521833 \hich\af2\dbch\af31505\loch\f2 . }{\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 \f2\fs21\insrsid12714335 \hich\af2\dbch\af31505\loch\f2 @@ -271,7 +272,7 @@ \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\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. +\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 \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 \loch\f2 @@ -294,20 +295,20 @@ \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 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 Lees de t\hich\af2\dbch\af31505\loch\f2 ekst 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\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 +\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 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b7200000068007400740070003a002f002f007700770077002e0067006e0075002e006f00720067002f006c006900630065006e007300650073002f006c00670070006c002d0033002e0030002e0065006e002e006800 -74006d006c000000795881f43b1d7f48af2c825dc485276300000000a5ab0000000000004400e900006e14ec68d800000000000700b2004f000000ec000000006e20ffffff00000072002101000200}}}{\fldrslt {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 +74006d006c000000795881f43b1d7f48af2c825dc485276300000000a5ab0000000000004400e900006e14ec68d800000000000700b2004f000000ec000000006e20ffffff0000007200210100020059}}}{\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 . @@ -347,9 +348,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 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. +\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 \hich\af2\dbch\af31505\loch\f2 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 +361,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 -6d006c000000795881f43b1d7f48af2c825dc485276300000000a5ab000000477d4c0000945e0000000065002f30000060b30004000000000000000000d8003500000000000000e5ff1f006000}}}{\fldrslt {\rtlch\fcs1 \af2\afs21 \ltrch\fcs0 +6d006c000000795881f43b1d7f48af2c825dc485276300000000a5ab000000477d4c0000945e0000000065002f30000060b30004000000000000000000d8003500000000000000e5ff1f00600000}}}{\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 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 +\f2\fs21\lang1043\langfe2052\langnp1043\insrsid15600639\charrsid14624369 \hich\af2\dbch\af31505\loch\f2 logo\hich\f2 \rquote \loch\f2 s en verwijzingen naar "Deltares" \hich\af2\dbch\af31505\loch\f2 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 \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 +479,18 @@ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff010000000c6ad98892f1d411a65f0040963251e50000000000000000000000000051 -063c6be2d1010300000080020000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff0200000000000000000000000000000000000000000000000051063c6be2d101 -0051063c6be2d10100000000000000000000000033005200d8004100ce00cd004d00cc004100d400d2005600d800cb00c100330034004f0055004d005700d0003d003d000000000000000000000000000000000032000101ffffffffffffffff0300000000000000000000000000000000000000000000000051063c6be2 -d1010051063c6be2d1010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000 +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff010000000c6ad98892f1d411a65f0040963251e5000000000000000000000000e07b +c5e579e2d1010300000080020000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff020000000000000000000000000000000000000000000000e07bc5e579e2d101 +e07bc5e579e2d1010000000000000000000000003000d20056004c00cb005700d000cd0049004500de00d50044004900df004200c50058003300c600440041003d003d000000000000000000000000000000000032000101ffffffffffffffff030000000000000000000000000000000000000000000000e07bc5e579e2 +d101e07bc5e579e2d1010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000 00000000000000000000000000000000d800000000000000010000000200000003000000feffffff0500000006000000070000000800000009000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c623a536f75726365732053656c65637465645374796c653d225c4150412e58534c22205374796c654e616d653d224150412220786d6c6e733a623d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f7267 2f6f6666696365446f63756d656e742f323030362f6269626c696f6772617068792220786d6c6e733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879223e3c2f623a536f75726365733e00000000 -0000000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b42413030 -314537352d324344332d344330332d393545322d4238354437384535304335427d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c +0000000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b41443442 +323536422d324436432d344632302d423530432d3846433139353737363630437d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c 64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6f70656e500072006f007000650072007400690065007300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffffffff000000000000 0000000000000000000000000000000000000000000000000000000000000400000055010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000 Index: Application/Ringtoets/src/Application.Ringtoets/App.xaml.cs =================================================================== diff -u -r31d4921763c045040f9300542aed356147966cc8 -rc5717eada81586126cbf53266abb0fc925382393 --- Application/Ringtoets/src/Application.Ringtoets/App.xaml.cs (.../App.xaml.cs) (revision 31d4921763c045040f9300542aed356147966cc8) +++ Application/Ringtoets/src/Application.Ringtoets/App.xaml.cs (.../App.xaml.cs) (revision c5717eada81586126cbf53266abb0fc925382393) @@ -40,7 +40,7 @@ using Core.Common.Utils; using Core.Plugins.Chart; using Core.Plugins.CommonTools; -using Core.Plugins.DotSpatial; +using Core.Plugins.Map; using Core.Plugins.ProjectExplorer; using log4net; using Ringtoets.GrassCoverErosionInwards.Plugin; @@ -157,7 +157,7 @@ new PipingPlugin(), new HeightStructuresPlugin(), new ChartPlugin(), - new DotSpatialPlugin() + new MapPlugin() #if INCLUDE_DEMOPROJECT , new DemoProjectPlugin() #endif Index: Application/Ringtoets/src/Application.Ringtoets/Application.Ringtoets.csproj =================================================================== diff -u -r31d4921763c045040f9300542aed356147966cc8 -rc5717eada81586126cbf53266abb0fc925382393 --- Application/Ringtoets/src/Application.Ringtoets/Application.Ringtoets.csproj (.../Application.Ringtoets.csproj) (revision 31d4921763c045040f9300542aed356147966cc8) +++ Application/Ringtoets/src/Application.Ringtoets/Application.Ringtoets.csproj (.../Application.Ringtoets.csproj) (revision c5717eada81586126cbf53266abb0fc925382393) @@ -65,14 +65,6 @@ Ringtoets.ico - - ..\..\..\..\packages\EntityFramework.6.1.3\lib\net40\EntityFramework.dll - True - - - ..\..\..\..\packages\EntityFramework.6.1.3\lib\net40\EntityFramework.SqlServer.dll - True - False ..\..\..\..\packages\Fluent.Ribbon.3.4.0\lib\net40\Fluent.dll @@ -83,17 +75,10 @@ - 3.5 - - - - ..\..\..\..\packages\System.Data.SQLite.Core.1.0.99.0\lib\net40\System.Data.SQLite.dll - True - @@ -156,18 +141,20 @@ Core.Plugins.CommonTools False - + {610E0A9C-1997-4C43-A10E-39D4C66ADA93} - Core.Plugins.DotSpatial + Core.Plugins.Map + False {ED20DBA9-D577-423F-A68D-A0A8130FB10B} Core.Plugins.ProjectExplorer False - + {ffe3a667-3a4c-4f48-bc6b-1589867fcb41} Demo.Ringtoets + False {20955E2A-8CEB-46B0-ADC4-A97D4C6BBDF5} @@ -192,6 +179,7 @@ {50963f12-448c-41ba-a62c-cdb0ab8d21e0} Application.Ringtoets.Storage + False @@ -271,11 +259,4 @@ - - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - \ No newline at end of file Index: Application/Ringtoets/src/Application.Ringtoets/app.config =================================================================== diff -u -r3fdd2bee85bdf8b556c52d6706ed887c2b70bed4 -rc5717eada81586126cbf53266abb0fc925382393 --- Application/Ringtoets/src/Application.Ringtoets/app.config (.../app.config) (revision 3fdd2bee85bdf8b556c52d6706ed887c2b70bed4) +++ Application/Ringtoets/src/Application.Ringtoets/app.config (.../app.config) (revision c5717eada81586126cbf53266abb0fc925382393) @@ -36,7 +36,7 @@
- +
Index: Application/Ringtoets/src/Application.Ringtoets/packages.config =================================================================== diff -u -r4512af7782ee31b36941bb280b54d9da2953dd71 -rc5717eada81586126cbf53266abb0fc925382393 --- Application/Ringtoets/src/Application.Ringtoets/packages.config (.../packages.config) (revision 4512af7782ee31b36941bb280b54d9da2953dd71) +++ Application/Ringtoets/src/Application.Ringtoets/packages.config (.../packages.config) (revision c5717eada81586126cbf53266abb0fc925382393) @@ -23,8 +23,6 @@ All rights reserved. --> - - Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.DotSpatial/Commands/ToggleMapLegendViewCommand.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.DotSpatial/Core.Plugins.DotSpatial.csproj'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.DotSpatial/DotSpatialPlugin.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.DotSpatial/Legend/MapLegendController.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.DotSpatial/Legend/MapLegendView.Designer.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.DotSpatial/Legend/MapLegendView.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.DotSpatial/Legend/MapLegendView.resx'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.DotSpatial/MapRibbon.xaml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.DotSpatial/MapRibbon.xaml.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.DotSpatial/Properties/AssemblyInfo.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.DotSpatial/Properties/Resources.Designer.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.DotSpatial/Properties/Resources.resx'. Fisheye: No comparison available. Pass `N' to diff? Index: Core/Plugins/src/Core.Plugins.DotSpatial/Resources/MapPanZoomImage.png =================================================================== diff -u -r3aa114b55dd6caa46890a54af64fba874497c135 -rc5717eada81586126cbf53266abb0fc925382393 Binary files differ Index: Core/Plugins/src/Core.Plugins.DotSpatial/Resources/area.png =================================================================== diff -u -rd72c02e33c5e53b6048a701cd68673db7053726b -rc5717eada81586126cbf53266abb0fc925382393 Binary files differ Index: Core/Plugins/src/Core.Plugins.DotSpatial/Resources/line.png =================================================================== diff -u -rd72c02e33c5e53b6048a701cd68673db7053726b -rc5717eada81586126cbf53266abb0fc925382393 Binary files differ Index: Core/Plugins/src/Core.Plugins.DotSpatial/Resources/map--plus.png =================================================================== diff -u -r5e80369138024933a45f3e4ae721509dfb17d8fb -rc5717eada81586126cbf53266abb0fc925382393 Binary files differ Index: Core/Plugins/src/Core.Plugins.DotSpatial/Resources/map-pin.png =================================================================== diff -u -r33d1826440741f2fa8b53129d59c532f110dc2bf -rc5717eada81586126cbf53266abb0fc925382393 Binary files differ Index: Core/Plugins/src/Core.Plugins.DotSpatial/Resources/map.png =================================================================== diff -u -r6522a9f7396e770f8ecdcfda59c0966a86f6fb23 -rc5717eada81586126cbf53266abb0fc925382393 Binary files differ Index: Core/Plugins/src/Core.Plugins.DotSpatial/Resources/points.png =================================================================== diff -u -rd72c02e33c5e53b6048a701cd68673db7053726b -rc5717eada81586126cbf53266abb0fc925382393 Binary files differ Index: Core/Plugins/src/Core.Plugins.DotSpatial/Resources/zoomextents.png =================================================================== diff -u -r3aa114b55dd6caa46890a54af64fba874497c135 -rc5717eada81586126cbf53266abb0fc925382393 Binary files differ Index: Core/Plugins/src/Core.Plugins.DotSpatial/Resources/zoomrectangle.png =================================================================== diff -u -r3aa114b55dd6caa46890a54af64fba874497c135 -rc5717eada81586126cbf53266abb0fc925382393 Binary files differ Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/src/Core.Plugins.DotSpatial/packages.config'. Fisheye: No comparison available. Pass `N' to diff? Index: Core/Plugins/src/Core.Plugins.Map/Commands/ToggleMapLegendViewCommand.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Map/Commands/ToggleMapLegendViewCommand.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Map/Commands/ToggleMapLegendViewCommand.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -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.Map.Legend; + +namespace Core.Plugins.Map.Commands +{ + /// + /// The command which toggles the visibility of the . + /// + public class ToggleMapLegendViewCommand : ICommand + { + private readonly MapLegendController controller; + + /// + /// Creates a new instance of . + /// + /// The to use to invoke actions and determine state. + public ToggleMapLegendViewCommand(MapLegendController controller) + { + this.controller = controller; + } + + public bool Enabled + { + get + { + return true; + } + } + + public bool Checked + { + get + { + return controller.IsMapLegendViewOpen; + } + } + + public void Execute(params object[] arguments) + { + controller.ToggleView(); + } + } +} \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Map/Core.Plugins.Map.csproj =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Map/Core.Plugins.Map.csproj (revision 0) +++ Core/Plugins/src/Core.Plugins.Map/Core.Plugins.Map.csproj (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,198 @@ + + + + + {610E0A9C-1997-4C43-A10E-39D4C66ADA93} + Library + Properties + Core.Plugins.Map + Core.Plugins.Map + v4.0 + 512 + + + true + full + false + DEBUG;TRACE + prompt + + + none + true + TRACE + prompt + + + TRACE + true + true + pdbonly + prompt + AllRules.ruleset + + + + False + ..\..\..\..\lib\DotSpatial.1.8\DotSpatial.Data.dll + + + False + ..\..\..\..\lib\DotSpatial.1.8\DotSpatial.Topology.dll + + + ..\..\..\..\packages\Fluent.Ribbon.3.4.0\lib\net40\Fluent.dll + True + + + ..\..\..\..\packages\log4net.2.0.4\lib\net40-full\log4net.dll + True + + + + + + + + + + + + + + Properties\GlobalAssembly.cs + + + + + + UserControl + + + MapLegendView.cs + + + MapRibbon.xaml + + + + 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 + + + {e344867e-9ac9-44c8-88a5-8185681679a9} + Core.Common.IO + False + + + {f49bd8b2-332a-4c91-a196-8cce0a2c7d98} + Core.Common.Utils + False + + + {c90b77da-e421-43cc-b82e-529651bc21ac} + Core.Common.Version + False + + + {5a91174a-fb95-4c9d-9ca5-81c0b8d4361a} + Core.Components.DotSpatial.Forms + False + + + {4a06df0d-5d75-4bad-a95a-a3db9b7c4ad5} + Core.Components.Gis.Forms + False + + + {fd264fad-e6f9-47cc-97cd-770199a8e629} + Core.Components.Gis.IO + False + + + {318ba582-88c9-4816-a54a-a7e431461de3} + Core.Components.Gis + False + + + + + Copying.Lesser.licenseheader + + + + + + Designer + MSBuild:Compile + + + + + MapLegendView.cs + + + PublicResXFileCodeGenerator + Resources.Designer.cs + Designer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Map/Legend/MapLegendController.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Map/Legend/MapLegendController.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Map/Legend/MapLegendController.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,140 @@ +// 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 System.Windows.Forms; +using Core.Common.Controls.Views; +using Core.Common.Gui; +using Core.Common.Gui.ContextMenu; +using Core.Common.Gui.Forms.ViewHost; +using Core.Components.Gis.Data; +using Core.Plugins.Map.Properties; + +namespace Core.Plugins.Map.Legend +{ + /// + /// This class controls the actions which are related to controlling visibility and updating contents of a . + /// + public class MapLegendController + { + private readonly IViewController viewController; + private readonly IContextMenuBuilderProvider contextMenuBuilderProvider; + private readonly IWin32Window parentWindow; + + /// + /// Fired when the map legend has been opened. + /// + public EventHandler OnOpenLegend; + + private IView legendView; + + /// + /// Creates a new instance of . + /// + /// The to invoke actions upon. + /// The to create context menus. + /// The to show dialogs. + /// Thrown when or is null. + public MapLegendController(IViewController viewController, IContextMenuBuilderProvider contextMenuBuilderProvider, IWin32Window parentWindow) + { + if (viewController == null) + { + throw new ArgumentNullException("viewController", "Cannot create a MapLegendController when the view controller is null."); + } + if (contextMenuBuilderProvider == null) + { + throw new ArgumentNullException("contextMenuBuilderProvider", "Cannot create a MapLegendController when the context menu builder provider is null."); + } + if (parentWindow == null) + { + throw new ArgumentNullException("parentWindow", "Cannot create a MapLegendController when the parent window is null"); + } + this.viewController = viewController; + this.contextMenuBuilderProvider = contextMenuBuilderProvider; + this.parentWindow = parentWindow; + } + + /// + /// Gets a value indicating whether the is visible. + /// + public bool IsMapLegendViewOpen + { + get + { + return legendView != null && viewController.ViewHost.ToolViews.Contains(legendView); + } + } + + /// + /// Toggles the visibility of the . + /// + public void ToggleView() + { + if (IsMapLegendViewOpen) + { + 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(MapData data) + { + if (IsMapLegendViewOpen) + { + legendView.Data = data; + } + } + + /// + /// Opens the . + /// + private void OpenLegendView() + { + legendView = new MapLegendView(contextMenuBuilderProvider, parentWindow); + + viewController.ViewHost.AddToolView(legendView, ToolViewLocation.Left); + viewController.ViewHost.SetImage(legendView, Resources.MapIcon); + + if (OnOpenLegend != null) + { + OnOpenLegend(this, EventArgs.Empty); + } + } + + /// + /// Closes the . + /// + private void CloseLegendView() + { + viewController.ViewHost.Remove(legendView); + legendView = null; + } + } +} \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Map/Legend/MapLegendView.Designer.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Map/Legend/MapLegendView.Designer.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Map/Legend/MapLegendView.Designer.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,57 @@ +namespace Core.Plugins.Map.Legend +{ + partial class MapLegendView + { + /// + /// 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.treeViewControl = new Core.Common.Controls.TreeView.TreeViewControl(); + this.SuspendLayout(); + // + // treeViewControl + // + this.treeViewControl.Data = null; + this.treeViewControl.Dock = System.Windows.Forms.DockStyle.Fill; + this.treeViewControl.Location = new System.Drawing.Point(0, 0); + this.treeViewControl.Name = "treeViewControl"; + this.treeViewControl.Size = new System.Drawing.Size(150, 150); + this.treeViewControl.TabIndex = 0; + // + // MapLegendView + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.treeViewControl); + this.Name = "MapLegendView"; + this.ResumeLayout(false); + + } + + #endregion + + private Common.Controls.TreeView.TreeViewControl treeViewControl; + } +} Index: Core/Plugins/src/Core.Plugins.Map/Legend/MapLegendView.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Map/Legend/MapLegendView.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Map/Legend/MapLegendView.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,271 @@ +// 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.IO; +using System.Linq; +using System.Windows.Forms; +using Core.Common.Base; +using Core.Common.Controls.TreeView; +using Core.Common.Controls.Views; +using Core.Common.Gui.ContextMenu; +using Core.Common.IO.Exceptions; +using Core.Common.Utils.Builders; +using Core.Components.DotSpatial.Forms; +using Core.Components.Gis.Data; +using Core.Components.Gis.IO.Readers; +using DotSpatial.Data; +using DotSpatial.Topology; +using log4net; +using MapResources = Core.Plugins.Map.Properties.Resources; +using GuiResources = Core.Common.Gui.Properties.Resources; +using ILog = log4net.ILog; + +namespace Core.Plugins.Map.Legend +{ + /// + /// The view which shows the data that is added to a . + /// + public sealed partial class MapLegendView : UserControl, IView + { + private static readonly ILog log = LogManager.GetLogger(typeof(MapLegendView)); + + private readonly IContextMenuBuilderProvider contextMenuBuilderProvider; + private readonly IWin32Window parentWindow; + + /// + /// Creates a new instance of . + /// + /// The to create context menus. + /// + /// Thrown when or is null. + public MapLegendView(IContextMenuBuilderProvider contextMenuBuilderProvider, IWin32Window parentWindow) + { + if (contextMenuBuilderProvider == null) + { + throw new ArgumentNullException("contextMenuBuilderProvider", "Cannot create a MapLegendView when the context menu builder provider is null."); + } + if (parentWindow == null) + { + throw new ArgumentNullException("parentWindow", "Cannot create a MapLegendView when the parent window is null."); + } + + this.contextMenuBuilderProvider = contextMenuBuilderProvider; + this.parentWindow = parentWindow; + InitializeComponent(); + Text = MapResources.General_Map; + + RegisterTreeNodeInfos(); + } + + public object Data + { + get + { + return (MapData) treeViewControl.Data; + } + set + { + treeViewControl.Data = (MapData) value; + } + } + + private void RegisterTreeNodeInfos() + { + treeViewControl.RegisterTreeNodeInfo(new TreeNodeInfo + { + Text = mapPointData => mapPointData.Name, + Image = mapPointData => MapResources.PointsIcon, + CanDrag = (mapPointData, parentData) => true, + CanCheck = mapPointData => true, + IsChecked = mapPointData => mapPointData.IsVisible, + OnNodeChecked = PointBasedMapDataOnNodeChecked + }); + + treeViewControl.RegisterTreeNodeInfo(new TreeNodeInfo + { + Text = mapLineData => mapLineData.Name, + Image = mapLineData => MapResources.LineIcon, + CanDrag = (mapLineData, parentData) => true, + CanCheck = mapLineData => true, + IsChecked = mapLineData => mapLineData.IsVisible, + OnNodeChecked = PointBasedMapDataOnNodeChecked + }); + + treeViewControl.RegisterTreeNodeInfo(new TreeNodeInfo + { + Text = mapPolygonData => mapPolygonData.Name, + Image = mapPolygonData => MapResources.AreaIcon, + CanDrag = (mapPolygonData, parentData) => true, + CanCheck = mapPolygonData => true, + IsChecked = mapPolygonData => mapPolygonData.IsVisible, + OnNodeChecked = PointBasedMapDataOnNodeChecked + }); + + treeViewControl.RegisterTreeNodeInfo(new TreeNodeInfo + { + Text = mapDataCollection => mapDataCollection.Name, + Image = mapDataCollection => GuiResources.folder, + ChildNodeObjects = mapDataCollection => mapDataCollection.List.Reverse().Cast().ToArray(), + CanDrop = MapControlCanDrop, + CanInsert = MapControlCanInsert, + OnDrop = MapControlOnDrop, + ContextMenuStrip = MapDataCollectionContextMenuStrip + }); + } + + #region MapData + + private static void PointBasedMapDataOnNodeChecked(FeatureBasedMapData featureBasedMapData, object parentData) + { + featureBasedMapData.IsVisible = !featureBasedMapData.IsVisible; + featureBasedMapData.NotifyObservers(); + + var observableParent = parentData as IObservable; + if (observableParent != null) + { + observableParent.NotifyObservers(); + } + } + + #endregion + + # region MapDataCollection + + private static bool MapControlCanDrop(object draggedData, object targetData) + { + return draggedData is MapData; + } + + private static bool MapControlCanInsert(object draggedData, object targetData) + { + return draggedData is MapData; + } + + private static void MapControlOnDrop(object droppedData, object newParentData, object oldParentData, int position, TreeViewControl control) + { + var mapData = (MapData) droppedData; + var target = (MapDataCollection) newParentData; + + target.Remove(mapData); + target.Insert(target.List.Count - position, mapData); // Note: target is the same as the previous parent in this case + target.NotifyObservers(); + } + + private ContextMenuStrip MapDataCollectionContextMenuStrip(MapDataCollection mapDataCollection, object parentData, TreeViewControl treeView) + { + StrictContextMenuItem addMapLayerMenuItem = new StrictContextMenuItem( + MapResources.MapLegendView_MapDataCollectionContextMenuStrip__Add_MapLayer, + MapResources.MapLegendView_MapDataCollectionContextMenuStrip_Add_MapLayer_ToolTip, + MapResources.MapPlusIcon, + (sender, args) => ShowSelectShapeFileDialog(sender, args, mapDataCollection)); + + return contextMenuBuilderProvider.Get(mapDataCollection, treeView).AddCustomItem(addMapLayerMenuItem).Build(); + } + + # endregion + + #region ShapeFileImporter + + private void ShowSelectShapeFileDialog(object sender, EventArgs eventArgs, MapDataCollection mapDataCollection) + { + var windowTitle = MapResources.MapLegendView_ShowSelectShapeFileDialog_Select_Shape_File; + using (var dialog = new OpenFileDialog + { + Filter = string.Format("{0} (*.shp)|*.shp", MapResources.MapLegendView_ShowSelectShapeFileDialog_Shape_file), + Multiselect = false, + Title = windowTitle, + RestoreDirectory = true, + CheckFileExists = false, + }) + { + if (dialog.ShowDialog(parentWindow) == DialogResult.OK) + { + CheckDataFormat(dialog.FileName, Path.GetFileNameWithoutExtension(dialog.FileName), mapDataCollection); + } + } + } + + private void CheckDataFormat(string filePath, string title, MapDataCollection mapDataCollection) + { + FeatureBasedMapData importedData; + + try + { + var featureSet = Shapefile.OpenFile(filePath); + + switch (featureSet.FeatureType) + { + case FeatureType.Point: + case FeatureType.MultiPoint: + using (ShapeFileReaderBase reader = new PointShapeFileReader(filePath)) + { + importedData = GetShapeFileData(reader, title); + } + break; + case FeatureType.Line: + using (ShapeFileReaderBase reader = new PolylineShapeFileReader(filePath)) + { + importedData = GetShapeFileData(reader, title); + } + break; + case FeatureType.Polygon: + using (ShapeFileReaderBase reader = new PolygonShapeFileReader(filePath)) + { + importedData = GetShapeFileData(reader, title); + } + break; + default: + log.Error(MapResources.MapLegendView_CheckDataFormat_ShapeFile_Contains_Unsupported_Data); + return; + } + + mapDataCollection.Add(importedData); + + log.Info(MapResources.MapLegendView_CheckDataFormat_Shapefile_Is_Imported); + mapDataCollection.NotifyObservers(); + } + catch (FileNotFoundException) + { + string message = new FileReaderErrorMessageBuilder(filePath) + .Build(MapResources.MapLegendView_CheckDataFormat_File_Does_Not_Exist_Or_Misses_Needed_Files); + log.Error(message); + } + catch (IOException) + { + string message = new FileReaderErrorMessageBuilder(filePath) + .Build(MapResources.MapLegendView_CheckDataFormat_An_Error_Occured_When_Trying_To_Read_The_File); + log.Error(message); + } + catch (CriticalFileReadException e) + { + log.Error(e.Message); + } + } + + private FeatureBasedMapData GetShapeFileData(ShapeFileReaderBase reader, string title) + { + return reader.ReadShapeFile(title); + } + + #endregion + } +} \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Map/Legend/MapLegendView.resx =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Map/Legend/MapLegendView.resx (revision 0) +++ Core/Plugins/src/Core.Plugins.Map/Legend/MapLegendView.resx (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Map/MapPlugin.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Map/MapPlugin.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Map/MapPlugin.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,112 @@ +// 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.Gis.Forms; +using Core.Plugins.Map.Commands; +using Core.Plugins.Map.Legend; + +namespace Core.Plugins.Map +{ + /// + /// The plug-in for the map component. + /// + public class MapPlugin : PluginBase + { + private MapRibbon mapRibbon; + private MapLegendController mapLegendController; + private bool activated; + + public override IRibbonCommandHandler RibbonCommandHandler + { + get + { + return mapRibbon; + } + } + + public override void Activate() + { + mapLegendController = CreateLegendController(Gui); + mapRibbon = CreateMapRibbon(); + + mapLegendController.ToggleView(); + Gui.ViewHost.ActiveDocumentViewChanged += OnActiveDocumentViewChanged; + activated = true; + } + + public override void Dispose() + { + if (activated) + { + Gui.ViewHost.ActiveDocumentViewChanged -= OnActiveDocumentViewChanged; + } + base.Dispose(); + } + + private MapLegendController CreateLegendController(IViewController viewController) + { + if (viewController == null) + { + throw new ArgumentNullException("viewController", @"Cannot create a MapLegendController when the view controller is null"); + } + + var controller = new MapLegendController(viewController, Gui, Gui.MainWindow); + controller.OnOpenLegend += (s, e) => UpdateComponentsForActiveDocumentView(); + return controller; + } + + private MapRibbon CreateMapRibbon() + { + return new MapRibbon + { + ToggleLegendViewCommand = new ToggleMapLegendViewCommand(mapLegendController) + }; + } + + 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 mapView = Gui.ViewHost.ActiveDocumentView as IMapView; + if (mapView != null) + { + mapRibbon.Map = mapView.Map; + mapLegendController.Update(mapView.Map.Data); + } + else + { + mapRibbon.Map = null; + mapLegendController.Update(null); + } + } + } +} \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Map/MapRibbon.xaml =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Map/MapRibbon.xaml (revision 0) +++ Core/Plugins/src/Core.Plugins.Map/MapRibbon.xaml (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: Core/Plugins/src/Core.Plugins.Map/MapRibbon.xaml.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Map/MapRibbon.xaml.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Map/MapRibbon.xaml.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -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.Gis.Forms; +using Fluent; + +namespace Core.Plugins.Map +{ + /// + /// This class represents the ribbon interaction which has to do with maps. + /// + public partial class MapRibbon : IRibbonCommandHandler + { + private IMapControl map; + + /// + /// Creates a new instance of . + /// + public MapRibbon() + { + InitializeComponent(); + } + + /// + /// Sets the to show the ribbon for. + /// + public IMapControl Map + { + private get + { + return map; + } + set + { + map = value; + + if (map != null) + { + ShowMapTab(); + } + else + { + HideMapTab(); + } + } + } + + /// + /// 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; + } + } + } + + public Ribbon GetRibbonControl() + { + return RibbonControl; + } + + public void ValidateItems() + { + ToggleLegendViewButton.IsChecked = ToggleLegendViewCommand != null && ToggleLegendViewCommand.Checked; + TogglePanningButton.IsChecked = Map != null && Map.IsPanningEnabled; + ToggleRectangleZoomingButton.IsChecked = Map != null && Map.IsRectangleZoomingEnabled; + ToggleMouseCoordinatesButton.IsChecked = Map != null && Map.IsMouseCoordinatesVisible; + } + + 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 MapContextualGroup.Name == tabGroupName && MapContextualGroup.Visibility == Visibility.Visible; + } + + private void ShowMapTab() + { + MapContextualGroup.Visibility = Visibility.Visible; + ValidateItems(); + } + + private void HideMapTab() + { + MapContextualGroup.Visibility = Visibility.Collapsed; + } + + private void ButtonToggleLegend_Click(object sender, RoutedEventArgs e) + { + ToggleLegendViewCommand.Execute(); + } + + private void ButtonZoomToAll_Click(object sender, RoutedEventArgs e) + { + Map.ZoomToAllVisibleLayers(); + } + + private void ButtonTogglePanning_Click(object sender, RoutedEventArgs e) + { + Map.TogglePanning(); + ValidateItems(); + } + + private void ButtonToggleRectangleZooming_Click(object sender, RoutedEventArgs e) + { + Map.ToggleRectangleZooming(); + ValidateItems(); + } + + private void ButtonToggleMouseCoordinates_Click(object sender, RoutedEventArgs e) + { + Map.ToggleMouseCoordinatesVisibility(); + } + } +} \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Map/Properties/AssemblyInfo.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Map/Properties/AssemblyInfo.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Map/Properties/AssemblyInfo.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -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.Map")] +[assembly: AssemblyProduct("Core.Plugins.Map")] +[assembly: Guid("610E0A9C-1997-4C43-A10E-39D4C66ADA93")] \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Map/Properties/Resources.Designer.cs =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Map/Properties/Resources.Designer.cs (revision 0) +++ Core/Plugins/src/Core.Plugins.Map/Properties/Resources.Designer.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,387 @@ +//------------------------------------------------------------------------------ +// +// 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.Map.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.Map.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 string similar to Kaart. + /// + public static string General_Map { + get { + return ResourceManager.GetString("General_Map", 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 Lijn. + /// + public static string MapData_Line_data_label { + get { + return ResourceManager.GetString("MapData_Line_data_label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Lijnen. + /// + public static string MapData_MultiLine_data_label { + get { + return ResourceManager.GetString("MapData_MultiLine_data_label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Punten. + /// + public static string MapData_Point_data_label { + get { + return ResourceManager.GetString("MapData_Point_data_label", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gebied. + /// + public static string MapData_Polygon_data_label { + get { + return ResourceManager.GetString("MapData_Polygon_data_label", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap MapIcon { + get { + object obj = ResourceManager.GetObject("MapIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized string similar to Het bestand is niet toegankelijk.. + /// + public static string MapLegendView_CheckDataFormat_An_Error_Occured_When_Trying_To_Read_The_File { + get { + return ResourceManager.GetString("MapLegendView_CheckDataFormat_An_Error_Occured_When_Trying_To_Read_The_File", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Het bestand of andere benodigde bestanden zijn niet gevonden.. + /// + public static string MapLegendView_CheckDataFormat_File_Does_Not_Exist_Or_Misses_Needed_Files { + get { + return ResourceManager.GetString("MapLegendView_CheckDataFormat_File_Does_Not_Exist_Or_Misses_Needed_Files", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to De data in het shapebestand wordt niet ondersteund.. + /// + public static string MapLegendView_CheckDataFormat_ShapeFile_Contains_Unsupported_Data { + get { + return ResourceManager.GetString("MapLegendView_CheckDataFormat_ShapeFile_Contains_Unsupported_Data", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Het shapebestand is geïmporteerd.. + /// + public static string MapLegendView_CheckDataFormat_Shapefile_Is_Imported { + get { + return ResourceManager.GetString("MapLegendView_CheckDataFormat_Shapefile_Is_Imported", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to &Voeg kaartlaag toe.... + /// + public static string MapLegendView_MapDataCollectionContextMenuStrip__Add_MapLayer { + get { + return ResourceManager.GetString("MapLegendView_MapDataCollectionContextMenuStrip__Add_MapLayer", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Importeer een nieuwe kaartlaag en voeg deze toe.. + /// + public static string MapLegendView_MapDataCollectionContextMenuStrip_Add_MapLayer_ToolTip { + get { + return ResourceManager.GetString("MapLegendView_MapDataCollectionContextMenuStrip_Add_MapLayer_ToolTip", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Selecteer shapebestand.. + /// + public static string MapLegendView_ShowSelectShapeFileDialog_Select_Shape_File { + get { + return ResourceManager.GetString("MapLegendView_ShowSelectShapeFileDialog_Select_Shape_File", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Shape file. + /// + public static string MapLegendView_ShowSelectShapeFileDialog_Shape_file { + get { + return ResourceManager.GetString("MapLegendView_ShowSelectShapeFileDialog_Shape_file", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap MapPlusIcon { + get { + object obj = ResourceManager.GetObject("MapPlusIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap MapPointIcon { + get { + object obj = ResourceManager.GetObject("MapPointIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 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 Kaarten. + /// + public static string Ribbon_ContextualGroup_Map { + get { + return ResourceManager.GetString("Ribbon_ContextualGroup_Map", 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 Hulpmiddelen. + /// + public static string Ribbon_GroupBox_Tools { + get { + return ResourceManager.GetString("Ribbon_GroupBox_Tools", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Toon coördinaten. + /// + public static string Ribbon_Toggle_Coordinates { + get { + return ResourceManager.GetString("Ribbon_Toggle_Coordinates", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Toon de coördinaten van de cursor op de kaart.. + /// + public static string Ribbon_Toggle_Coordinates_ToolTip { + get { + return ResourceManager.GetString("Ribbon_Toggle_Coordinates_ToolTip", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kaart. + /// + public static string Ribbon_Toggle_Legend { + get { + return ResourceManager.GetString("Ribbon_Toggle_Legend", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Open het kaartenpaneel.. + /// + 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 kaart 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 kaart 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 kaart 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.Map/Properties/Resources.resx =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Map/Properties/Resources.resx (revision 0) +++ Core/Plugins/src/Core.Plugins.Map/Properties/Resources.resx (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Kaart + + + + ..\Resources\map.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + Kaarten + + + Kaart + + + Open het kaartenpaneel. + + + Lijn + + + Punten + + + Gebied + + + ..\Resources\area.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\line.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\MapPanZoomImage.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + Verschuiven + + + Om te verschuiven, houdt u de linker muisknop ingedrukt op de kaart terwijl u de muis beweegt. + + + ..\Resources\zoomrectangle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + Navigatie + + + Zoom door rechthoek + + + Om in te zoomen met behulp van een rechthoek, houdt u de linker muisknop ingedrukt op de kaart terwijl u de muis beweegt. + + + Zoom naar alles + + + Zet het zoomniveau van de kaart 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 + + + Lijnen + + + ..\Resources\map-pin.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + Hulpmiddelen + + + Toon coördinaten + + + Toon de coördinaten van de cursor op de kaart. + + + &Voeg kaartlaag toe... + + + Importeer een nieuwe kaartlaag en voeg deze toe. + + + ..\Resources\map--plus.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + Selecteer shapebestand. + + + Shape file + + + De data in het shapebestand wordt niet ondersteund. + + + Het shapebestand is geïmporteerd. + + + Het bestand of andere benodigde bestanden zijn niet gevonden. + + + Het bestand is niet toegankelijk. + + \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.Map/Resources/MapPanZoomImage.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Map/Resources/area.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Map/Resources/line.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Map/Resources/map--plus.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Map/Resources/map-pin.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Map/Resources/map.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Map/Resources/points.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Map/Resources/zoomextents.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Map/Resources/zoomrectangle.png =================================================================== diff -u Binary files differ Index: Core/Plugins/src/Core.Plugins.Map/packages.config =================================================================== diff -u --- Core/Plugins/src/Core.Plugins.Map/packages.config (revision 0) +++ Core/Plugins/src/Core.Plugins.Map/packages.config (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Chart.Test/Core.Plugins.Chart.Test.csproj =================================================================== diff -u -r31d4921763c045040f9300542aed356147966cc8 -rc5717eada81586126cbf53266abb0fc925382393 --- Core/Plugins/test/Core.Plugins.Chart.Test/Core.Plugins.Chart.Test.csproj (.../Core.Plugins.Chart.Test.csproj) (revision 31d4921763c045040f9300542aed356147966cc8) +++ Core/Plugins/test/Core.Plugins.Chart.Test/Core.Plugins.Chart.Test.csproj (.../Core.Plugins.Chart.Test.csproj) (revision c5717eada81586126cbf53266abb0fc925382393) @@ -126,8 +126,7 @@ {4163B996-3455-4324-A38A-9F2F0E6FCB52} - Core.Plugins.OxyPlot - True + Core.Plugins.Chart Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.DotSpatial.Test/Commands/ToggleMapLegendViewCommandTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.DotSpatial.Test/Core.Plugins.DotSpatial.Test.csproj'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.DotSpatial.Test/DotSpatialPluginTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.DotSpatial.Test/Legend/MapDataCollectionTreeNodeInfoTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.DotSpatial.Test/Legend/MapLegendControllerTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.DotSpatial.Test/Legend/MapLegendViewTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.DotSpatial.Test/Legend/MapLineDataTreeNodeInfoTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.DotSpatial.Test/Legend/MapPointDataTreeNodeInfoTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.DotSpatial.Test/Legend/MapPolygonDataTreeNodeInfoTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.DotSpatial.Test/MapRibbonTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.DotSpatial.Test/Properties/AssemblyInfo.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.DotSpatial.Test/TestMapView.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.DotSpatial.Test/TestView.Designer.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.DotSpatial.Test/TestView.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.DotSpatial.Test/TestView.resx'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag c5717eada81586126cbf53266abb0fc925382393 refers to a dead (removed) revision in file `Core/Plugins/test/Core.Plugins.DotSpatial.Test/packages.config'. Fisheye: No comparison available. Pass `N' to diff? Index: Core/Plugins/test/Core.Plugins.Map.Test/Commands/ToggleMapLegendViewCommandTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Map.Test/Commands/ToggleMapLegendViewCommandTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Map.Test/Commands/ToggleMapLegendViewCommandTest.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,141 @@ +// 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.Forms; +using Core.Common.Controls.Commands; +using Core.Common.Controls.Views; +using Core.Common.Gui; +using Core.Common.Gui.ContextMenu; +using Core.Common.Gui.Forms.ViewHost; +using Core.Plugins.Map.Commands; +using Core.Plugins.Map.Legend; +using NUnit.Framework; +using Rhino.Mocks; + +namespace Core.Plugins.Map.Test.Commands +{ + [TestFixture] + public class ToggleMapLegendViewCommandTest + { + [Test] + public void Constructor_Always_CreatesICommand() + { + // Call + var command = new ToggleMapLegendViewCommand(null); + + // Assert + Assert.IsInstanceOf(command); + } + + [Test] + public void Enabled_Always_ReturnsTrue() + { + // Call + var command = new ToggleMapLegendViewCommand(null); + + // 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(); + var parentWindow = mocks.StrictMock(); + + var contextMenuBuilderProvider = mocks.StrictMock(); + + if (open) + { + var toolViewList = new List(); + var viewHost = mocks.Stub(); + + viewController.Stub(vc => vc.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 MapLegendView); + }); + + viewHost.Expect(vm => vm.SetImage(null, null)).IgnoreArguments(); + } + + mocks.ReplayAll(); + + var controller = new MapLegendController(viewController, contextMenuBuilderProvider, parentWindow); + var command = new ToggleMapLegendViewCommand(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 contextMenuBuilderProvider = mocks.StrictMock(); + var parentWindow = mocks.StrictMock(); + var viewHost = mocks.Stub(); + var toolViewList = new List(); + + viewController.Stub(vc => vc.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 MapLegendView); + }); + viewHost.Expect(vm => vm.SetImage(null, null)).IgnoreArguments(); + + // Close + viewHost.Expect(vm => vm.Remove(Arg.Matches(v => true))); + + mocks.ReplayAll(); + + var controller = new MapLegendController(viewController, contextMenuBuilderProvider, parentWindow); + var command = new ToggleMapLegendViewCommand(controller); + + // Call + command.Execute(); + command.Execute(); + + // Assert + mocks.VerifyAll(); + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Map.Test/Core.Plugins.Map.Test.csproj =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Map.Test/Core.Plugins.Map.Test.csproj (revision 0) +++ Core/Plugins/test/Core.Plugins.Map.Test/Core.Plugins.Map.Test.csproj (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,154 @@ + + + + Debug + x86 + {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7} + Library + Properties + Core.Plugins.Map.Test + Core.Plugins.Map.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 + + + + ..\..\..\..\packages\Fluent.Ribbon.3.4.0\lib\net40\Fluent.dll + True + + + ..\..\..\..\packages\NUnit.2.6.4\lib\nunit.framework.dll + True + + + + + ..\..\..\..\packages\RhinoMocks.3.6.1\lib\net\Rhino.Mocks.dll + + + + + + + + + + + + + + + + + + + + + Component + + + UserControl + + + TestView.cs + + + + + {3BBFD65B-B277-4E50-AE6D-BD24C3434609} + Core.Common.Base + + + {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 + True + + + {F49BD8B2-332A-4C91-A196-8CCE0A2C7D98} + Core.Common.Utils + + + {26214BD0-DAFB-4CFC-8EB2-80C5D53C859E} + Core.Common.Gui.TestUtil + + + {D749EE4C-CE50-4C17-BF01-9A953028C126} + Core.Common.TestUtil + + + {5a91174a-fb95-4c9d-9ca5-81c0b8d4361a} + Core.Components.DotSpatial.Forms + + + {4a06df0d-5d75-4bad-a95a-a3db9b7c4ad5} + Core.Components.Gis.Forms + + + {318ba582-88c9-4816-a54a-a7e431461de3} + Core.Components.Gis + + + {9B6F3987-EAF7-4733-80C1-3DCAB44D87AE} + Core.Components.DotSpatial.TestUtil + + + {610e0a9c-1997-4c43-a10e-39d4c66ada93} + Core.Plugins.DotSpatial + + + + + Copying.Lesser.licenseheader + + + + + + TestView.cs + + + + + \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapDataCollectionTreeNodeInfoTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapDataCollectionTreeNodeInfoTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapDataCollectionTreeNodeInfoTest.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,321 @@ +// 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; +using Core.Common.Controls.TreeView; +using Core.Common.Gui.ContextMenu; +using Core.Common.Gui.TestUtil.ContextMenu; +using Core.Common.TestUtil; +using Core.Common.Utils.Reflection; +using Core.Components.Gis.Data; +using Core.Plugins.Map.Legend; +using Core.Plugins.Map.Properties; +using NUnit.Framework; +using Rhino.Mocks; +using GuiResources = Core.Common.Gui.Properties.Resources; + +namespace Core.Plugins.Map.Test.Legend +{ + [TestFixture] + public class MapDataCollectionTreeNodeInfoTest + { + private MockRepository mocks; + private MapLegendView mapLegendView; + private TreeNodeInfo info; + private IContextMenuBuilderProvider contextMenuBuilderProvider; + + [SetUp] + public void SetUp() + { + mocks = new MockRepository(); + contextMenuBuilderProvider = mocks.StrictMock(); + var parentWindow = mocks.Stub(); + mapLegendView = new MapLegendView(contextMenuBuilderProvider, parentWindow); + + TreeViewControl treeViewControl = TypeUtils.GetField(mapLegendView, "treeViewControl"); + Dictionary treeNodeInfoLookup = TypeUtils.GetField>(treeViewControl, "tagTypeTreeNodeInfoLookup"); + + info = treeNodeInfoLookup[typeof(MapDataCollection)]; + } + + [TearDown] + public void TearDown() + { + mapLegendView.Dispose(); + + mocks.VerifyAll(); + } + + [Test] + public void Initialized_Always_ExpectedPropertiesSet() + { + // Setup + mocks.ReplayAll(); + + // Assert + Assert.AreEqual(typeof(MapDataCollection), info.TagType); + Assert.IsNull(info.ForeColor); + 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); + Assert.IsNull(info.CanDrag); + } + + [Test] + public void Text_Always_ReturnsNameFromMapData() + { + // Setup + var mapDataCollection = mocks.StrictMock(Enumerable.Empty(), "Collectie"); + + mocks.ReplayAll(); + + // Call + var text = info.Text(mapDataCollection); + + // Assert + Assert.AreEqual(mapDataCollection.Name, text); + } + + [Test] + public void Image_Always_ReturnsImageFromResource() + { + // Setup + mocks.ReplayAll(); + + // Call + var image = info.Image(null); + + // Assert + TestHelper.AssertImagesAreEqual(GuiResources.folder, image); + } + + [Test] + public void ChildNodeObjects_Always_ReturnsChildsOnDataReversed() + { + // Setup + var mapData1 = mocks.StrictMock("test data"); + var mapData2 = mocks.StrictMock("test data"); + var mapData3 = mocks.StrictMock("test data"); + var mapDataCollection = mocks.StrictMock(new List + { + mapData1, + mapData2, + mapData3 + }, "test data"); + + mocks.ReplayAll(); + + // Call + var objects = info.ChildNodeObjects(mapDataCollection); + + // Assert + CollectionAssert.AreEqual(new[] + { + mapData3, + mapData2, + mapData1 + }, objects); + } + + [Test] + public void CanDrop_SourceNodeTagIsNoMapData_ReturnsFalse() + { + // Setup + var mapDataCollection = mocks.StrictMock(Enumerable.Empty(), "test data"); + + mocks.ReplayAll(); + + // Call + var canDrop = info.CanDrop(new object(), mapDataCollection); + + // Assert + Assert.IsFalse(canDrop); + } + + [Test] + public void CanDrop_SourceNodeTagIsMapData_ReturnsTrue() + { + // Setup + var mapData = mocks.StrictMock("test data"); + var mapDataCollection = mocks.StrictMock(Enumerable.Empty(), "test data"); + + mocks.ReplayAll(); + + // Call + var canDrop = info.CanDrop(mapData, mapDataCollection); + + // Assert + Assert.IsTrue(canDrop); + } + + [Test] + public void CanInsert_SourceNodeTagIsNoMapData_ReturnsFalse() + { + // Setup + var mapDataCollection = mocks.StrictMock(Enumerable.Empty(), "test data"); + + mocks.ReplayAll(); + + // Call + var canInsert = info.CanInsert(new object(), mapDataCollection); + + // Assert + Assert.IsFalse(canInsert); + } + + [Test] + public void CanInsert_SourceNodeTagIsMapData_ReturnsTrue() + { + // Setup + var mapData = mocks.StrictMock("test data"); + var mapDataCollection = mocks.StrictMock(Enumerable.Empty(), "test data"); + + mocks.ReplayAll(); + + // Call + var canInsert = info.CanInsert(mapData, mapDataCollection); + + // Assert + Assert.IsTrue(canInsert); + } + + [Test] + [TestCase(0)] + [TestCase(1)] + [TestCase(2)] + public void OnDrop_MapDataMovedToPositionInsideRange_SetsNewReverseOrder(int position) + { + // Setup + var mapData1 = mocks.StrictMock("test data"); + var mapData2 = mocks.StrictMock("test data"); + var mapData3 = mocks.StrictMock("test data"); + var mapDataCollection = mocks.StrictMock(new List + { + mapData1, + mapData2, + mapData3 + }, "test data"); + + var observer = mocks.StrictMock(); + observer.Expect(o => o.UpdateObserver()); + + mocks.ReplayAll(); + + using (var treeViewControl = new TreeViewControl()) + { + mapDataCollection.Attach(observer); + + // Call + info.OnDrop(mapData1, mapDataCollection, mapDataCollection, position, treeViewControl); + + // Assert + var reversedIndex = 2 - position; + Assert.AreSame(mapData1, mapDataCollection.List.ElementAt(reversedIndex)); + } + } + + [Test] + [TestCase(-50)] + [TestCase(-1)] + [TestCase(3)] + [TestCase(50)] + public void OnDrop_MapDataMovedToPositionOutsideRange_SetsNewReverseOrder(int position) + { + // Setup + var observer = mocks.StrictMock(); + var mapData1 = mocks.StrictMock("test data"); + var mapData2 = mocks.StrictMock("test data"); + var mapData3 = mocks.StrictMock("test data"); + var mapDataCollection = mocks.StrictMock(new List + { + mapData1, + mapData2, + mapData3 + }, "test data"); + + mapDataCollection.Attach(observer); + mocks.ReplayAll(); + + using (var treeViewControl = new TreeViewControl()) + { + // Call + TestDelegate test = () => info.OnDrop(mapData1, mapDataCollection, mapDataCollection, position, treeViewControl); + + // Assert + Assert.Throws(test); + } + } + + [Test] + public void ContextMenuStrip_Always_CallsContextMenuBuilderMethods() + { + // Setup + var mapDataCollection = mocks.StrictMock(Enumerable.Empty(), "test data"); + + var menuBuilderMock = mocks.StrictMock(); + menuBuilderMock.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilderMock); + menuBuilderMock.Expect(mb => mb.Build()).Return(null); + + using (var treeViewControl = new TreeViewControl()) + { + contextMenuBuilderProvider.Expect(cmbp => cmbp.Get(mapDataCollection, treeViewControl)).Return(menuBuilderMock); + + mocks.ReplayAll(); + + // Call + info.ContextMenuStrip(mapDataCollection, null, treeViewControl); + } + + // Assert + // Expectancies will be asserted in TearDown() + } + + [Test] + public void ContextMenuStrip_Always_ContainsAddMapLayerMenuItem() + { + // Setup + const string expectedItemText = "&Voeg kaartlaag toe..."; + const string expectedItemTooltip = "Importeer een nieuwe kaartlaag en voeg deze toe."; + var mapDataCollection = mocks.StrictMock(Enumerable.Empty(), "test data"); + + using (var treeViewControl = new TreeViewControl()) + { + contextMenuBuilderProvider.Expect(cmbp => cmbp.Get(mapDataCollection, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); + mocks.ReplayAll(); + + // Call + var contextMenu = info.ContextMenuStrip(mapDataCollection, null, treeViewControl); + + // Assert + TestHelper.AssertContextMenuStripContainsItem(contextMenu, 0, expectedItemText, expectedItemTooltip, Resources.MapPlusIcon); + } + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapLegendControllerTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapLegendControllerTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapLegendControllerTest.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -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; +using System.Collections.Generic; +using System.Windows.Forms; +using Core.Common.Controls.Views; +using Core.Common.Gui; +using Core.Common.Gui.ContextMenu; +using Core.Common.Gui.Forms.ViewHost; +using Core.Plugins.Map.Legend; +using NUnit.Framework; +using Rhino.Mocks; + +namespace Core.Plugins.Map.Test.Legend +{ + [TestFixture] + public class MapLegendControllerTest + { + [Test] + public void Constructor_WithoutViewController_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var contextMenuBuilderProvider = mocks.StrictMock(); + var parentWindow = mocks.StrictMock(); + mocks.ReplayAll(); + + // Call + TestDelegate test = () => new MapLegendController(null, contextMenuBuilderProvider, parentWindow); + + // Assert + ArgumentNullException exception = Assert.Throws(test); + Assert.AreEqual("viewController", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] + public void Constructor_WithoutContextMenuBuilderProvider_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var viewController = mocks.StrictMock(); + var parentWindow = mocks.StrictMock(); + mocks.ReplayAll(); + + // Call + TestDelegate test = () => new MapLegendController(viewController, null, parentWindow); + + // Assert + ArgumentNullException exception = Assert.Throws(test); + Assert.AreEqual("contextMenuBuilderProvider", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] + public void Constructor_WithoutParentWindow_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var viewController = mocks.StrictMock(); + var contextMenuBuilderProvider = mocks.StrictMock(); + mocks.ReplayAll(); + + // Call + TestDelegate test = () => new MapLegendController(viewController, contextMenuBuilderProvider, null); + + // Assert + ArgumentNullException exception = Assert.Throws(test); + Assert.AreEqual("parentWindow", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] + public void Constructor_WithViewControllerAndContextMenuBuilderProvider_DoesNotThrowException() + { + // Setup + var mocks = new MockRepository(); + var viewController = mocks.StrictMock(); + var contextMenuBuilderProvider = mocks.StrictMock(); + var parentWindow = mocks.StrictMock(); + + mocks.ReplayAll(); + + // Call + TestDelegate test = () => new MapLegendController(viewController, contextMenuBuilderProvider, parentWindow); + + // 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(); + var contextMenuBuilderProvider = mocks.StrictMock(); + var parentWindow = 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 MapLegendView); + }); + viewHost.Expect(vm => vm.SetImage(null, null)).IgnoreArguments(); + } + + mocks.ReplayAll(); + + var controller = new MapLegendController(viewController, contextMenuBuilderProvider, parentWindow); + + if (open) + { + controller.ToggleView(); + } + + // Call + var result = controller.IsMapLegendViewOpen; + + // 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 viewHost = mocks.StrictMock(); + var viewController = mocks.StrictMock(); + var contextMenuBuilderProvider = mocks.StrictMock(); + var parentWindow = mocks.StrictMock(); + + var toolViewList = new List(); + viewController.Stub(vc => vc.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 MapLegendView); + }); + viewHost.Stub(tvc => tvc.SetImage(null, null)).IgnoreArguments(); + + if (open) + { + viewHost.Expect(p => p.Remove(Arg.Matches(c => true))); + } + + mocks.ReplayAll(); + + var controller = new MapLegendController(viewController, contextMenuBuilderProvider, parentWindow); + + if (open) + { + controller.ToggleView(); + } + + // Call + controller.ToggleView(); + + // Assert + mocks.VerifyAll(); + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapLegendViewTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapLegendViewTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapLegendViewTest.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,212 @@ +// 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.Gui.ContextMenu; +using Core.Common.TestUtil; +using Core.Common.Utils.Reflection; +using Core.Components.Gis.Data; +using Core.Components.Gis.Features; +using Core.Components.Gis.Geometries; +using Core.Plugins.Map.Legend; +using Core.Plugins.Map.Properties; +using NUnit.Framework; +using Rhino.Mocks; + +namespace Core.Plugins.Map.Test.Legend +{ + [TestFixture] + public class MapLegendViewTest + { + private MockRepository mocks; + private IContextMenuBuilderProvider contextMenuBuilderProvider; + private IWin32Window parentWindow; + + [SetUp] + public void SetUp() + { + mocks = new MockRepository(); + contextMenuBuilderProvider = mocks.StrictMock(); + parentWindow = mocks.StrictMock(); + mocks.ReplayAll(); + } + + [TearDown] + public void TearDown() + { + mocks.VerifyAll(); + } + + [Test] + public void Constructor_ContextMenuBuilderProviderAndWindowNotNull_CreatesUserControlAndTreeViewControl() + { + // Call + using (var view = new MapLegendView(contextMenuBuilderProvider, parentWindow)) + { + var treeView = TypeUtils.GetField(view, "treeViewControl"); + + // Assert + Assert.IsInstanceOf(view); + Assert.IsInstanceOf(view); + Assert.IsNull(view.Data); + Assert.AreEqual(Resources.General_Map, view.Text); + Assert.IsNotNull(treeView); + Assert.IsInstanceOf(treeView); + } + } + + [Test] + public void Constructor_ContextMenuBuilderProviderNull_ThrowsArgumentNullException() + { + // Call + TestDelegate test = () => new MapLegendView(null, parentWindow); + + // Assert + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, "Cannot create a MapLegendView when the context menu builder provider is null."); + } + + [Test] + public void Constructor_ParentWindowNull_ThrowsArgumentNullException() + { + // Call + TestDelegate test = () => new MapLegendView(contextMenuBuilderProvider, null); + + // Assert + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, "Cannot create a MapLegendView when the parent window is null."); + } + + [Test] + public void Data_MapDataCollection_DataSet() + { + // Setup + using (var view = new MapLegendView(contextMenuBuilderProvider, parentWindow)) + { + var mapData = new MapDataCollection(new List(), "test data"); + + // Call + view.Data = mapData; + + // Assert + Assert.AreSame(mapData, view.Data); + Assert.IsInstanceOf(view.Data); + } + } + + [Test] + public void Data_MapPointData_DataSet() + { + // Setup + using (var view = new MapLegendView(contextMenuBuilderProvider, parentWindow)) + { + var mapData = new MapPointData(CreateFeature(), "test data"); + + // Call + view.Data = mapData; + + // Assert + Assert.AreSame(mapData, view.Data); + Assert.IsInstanceOf(view.Data); + } + } + + [Test] + public void Data_MapLineData_DataSet() + { + // Setup + using (var view = new MapLegendView(contextMenuBuilderProvider, parentWindow)) + { + var mapData = new MapLineData(CreateFeature(), "test data"); + + // Call + view.Data = mapData; + + // Assert + Assert.AreSame(mapData, view.Data); + Assert.IsInstanceOf(view.Data); + } + } + + [Test] + public void Data_MapPolygonData_DataSet() + { + // Setup + using (var view = new MapLegendView(contextMenuBuilderProvider, parentWindow)) + { + var mapData = new MapPolygonData(CreateFeature(), "test data"); + + // Call + view.Data = mapData; + + // Assert + Assert.AreSame(mapData, view.Data); + Assert.IsInstanceOf(view.Data); + } + } + + [Test] + public void Data_ForNull_NullSet() + { + // Setup + using (var view = new MapLegendView(contextMenuBuilderProvider, parentWindow)) + { + // Call + view.Data = null; + + // Assert + Assert.IsNull(view.Data); + } + } + + [Test] + public void Data_OtherObject_ThrowsInvalidCastException() + { + // Setup + using (var view = new MapLegendView(contextMenuBuilderProvider, parentWindow)) + { + // Call + TestDelegate test = () => view.Data = new object(); + + // Assert + Assert.Throws(test); + } + } + + private MapFeature[] CreateFeature() + { + return new [] + { + new MapFeature(new [] + { + new MapGeometry(new[] + { + Enumerable.Empty() + }) + }) + }; + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapLineDataTreeNodeInfoTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapLineDataTreeNodeInfoTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapLineDataTreeNodeInfoTest.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,205 @@ +// 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; +using Core.Common.Controls.TreeView; +using Core.Common.Gui.ContextMenu; +using Core.Common.TestUtil; +using Core.Common.Utils.Reflection; +using Core.Components.Gis.Data; +using Core.Components.Gis.Features; +using Core.Plugins.Map.Legend; +using Core.Plugins.Map.Properties; +using NUnit.Framework; +using Rhino.Mocks; + +namespace Core.Plugins.Map.Test.Legend +{ + [TestFixture] + public class MapLineDataTreeNodeInfoTest + { + private MockRepository mocks; + private MapLegendView mapLegendView; + private TreeNodeInfo info; + + [SetUp] + public void SetUp() + { + mocks = new MockRepository(); + var contextMenuBuilderProvider = mocks.StrictMock(); + var parentWindow = mocks.StrictMock(); + + mapLegendView = new MapLegendView(contextMenuBuilderProvider, parentWindow); + + TreeViewControl treeViewControl = TypeUtils.GetField(mapLegendView, "treeViewControl"); + Dictionary treeNodeInfoLookup = TypeUtils.GetField>(treeViewControl, "tagTypeTreeNodeInfoLookup"); + + info = treeNodeInfoLookup[typeof(MapLineData)]; + } + + [TearDown] + public void TearDown() + { + mapLegendView.Dispose(); + + mocks.VerifyAll(); + } + + [Test] + public void Initialized_Always_ExpectedPropertiesSet() + { + // Setup + mocks.ReplayAll(); + + // Assert + Assert.AreEqual(typeof(MapLineData), info.TagType); + Assert.IsNull(info.ForeColor); + Assert.IsNull(info.ContextMenuStrip); + Assert.IsNull(info.EnsureVisibleOnCreate); + Assert.IsNull(info.ChildNodeObjects); + Assert.IsNull(info.CanRename); + Assert.IsNull(info.OnNodeRenamed); + Assert.IsNull(info.CanRemove); + Assert.IsNull(info.OnNodeRemoved); + Assert.IsNull(info.CanDrop); + Assert.IsNull(info.CanInsert); + Assert.IsNull(info.OnDrop); + } + + [Test] + public void Text_Always_ReturnsNameFromMapData() + { + // Setup + var mapLineData = mocks.StrictMock(Enumerable.Empty(), "MapLineData"); + mocks.ReplayAll(); + + // Call + var text = info.Text(mapLineData); + + // Assert + Assert.AreEqual(mapLineData.Name, text); + } + + [Test] + public void Image_Always_ReturnsImageFromResource() + { + // Setup + mocks.ReplayAll(); + + // Call + var image = info.Image(null); + + // Assert + TestHelper.AssertImagesAreEqual(Resources.LineIcon, image); + } + + [Test] + public void CanCheck_Always_ReturnsTrue() + { + // Setup + var lineData = mocks.StrictMock(Enumerable.Empty(), "test data"); + + mocks.ReplayAll(); + + // Call + var canCheck = info.CanCheck(lineData); + + // Assert + Assert.IsTrue(canCheck); + } + + [TestCase(true)] + [TestCase(false)] + public void IsChecked_Always_ReturnsAccordingToVisibleStateOfLineData(bool isVisible) + { + // Setup + var lineData = mocks.StrictMock(Enumerable.Empty(), "test data"); + + lineData.IsVisible = isVisible; + + mocks.ReplayAll(); + + // Call + var canCheck = info.IsChecked(lineData); + + // Assert + Assert.AreEqual(isVisible, canCheck); + } + + [TestCase(true)] + [TestCase(false)] + public void OnNodeChecked_LineDataNodeWithoutParent_SetsLineDataVisibility(bool initialVisibleState) + { + // Setup + var lineData = mocks.StrictMock(Enumerable.Empty(), "test data"); + + mocks.ReplayAll(); + + lineData.IsVisible = initialVisibleState; + + // Call + info.OnNodeChecked(lineData, null); + + // Assert + Assert.AreEqual(!initialVisibleState, lineData.IsVisible); + } + + [TestCase(true)] + [TestCase(false)] + public void OnNodeChecked_LineDataNodeWithObservableParent_SetsLineDataVisibilityAndNotifiesParentObservers(bool initialVisibleState) + { + // Setup + var observable = mocks.StrictMock(); + observable.Expect(o => o.NotifyObservers()); + + var lineData = mocks.StrictMock(Enumerable.Empty(), "test data"); + + mocks.ReplayAll(); + + lineData.IsVisible = initialVisibleState; + + // Call + info.OnNodeChecked(lineData, observable); + + // Assert + Assert.AreEqual(!initialVisibleState, lineData.IsVisible); + } + + [Test] + public void CanDrag_Always_ReturnsTrue() + { + // Setup + var lineData = mocks.StrictMock(Enumerable.Empty(), "test data"); + + mocks.ReplayAll(); + + // Call + var canDrag = info.CanDrag(lineData, null); + + // Assert + Assert.IsTrue(canDrag); + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapPointDataTreeNodeInfoTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapPointDataTreeNodeInfoTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapPointDataTreeNodeInfoTest.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,202 @@ +// 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; +using Core.Common.Controls.TreeView; +using Core.Common.Gui.ContextMenu; +using Core.Common.TestUtil; +using Core.Common.Utils.Reflection; +using Core.Components.Gis.Data; +using Core.Components.Gis.Features; +using Core.Plugins.Map.Legend; +using Core.Plugins.Map.Properties; +using NUnit.Framework; +using Rhino.Mocks; + +namespace Core.Plugins.Map.Test.Legend +{ + [TestFixture] + public class MapPointDataTreeNodeInfoTest + { + private MockRepository mocks; + private MapLegendView mapLegendView; + private TreeNodeInfo info; + + [SetUp] + public void SetUp() + { + mocks = new MockRepository(); + var contextMenuBuilderProvider = mocks.StrictMock(); + var parentWindow = mocks.StrictMock(); + + mapLegendView = new MapLegendView(contextMenuBuilderProvider, parentWindow); + + TreeViewControl treeViewControl = TypeUtils.GetField(mapLegendView, "treeViewControl"); + Dictionary treeNodeInfoLookup = TypeUtils.GetField>(treeViewControl, "tagTypeTreeNodeInfoLookup"); + + info = treeNodeInfoLookup[typeof(MapPointData)]; + } + + [TearDown] + public void TearDown() + { + mapLegendView.Dispose(); + } + + [Test] + public void Initialized_Always_ExpectedPropertiesSet() + { + // Setup + mocks.ReplayAll(); + + // Assert + Assert.AreEqual(typeof(MapPointData), info.TagType); + Assert.IsNull(info.ForeColor); + Assert.IsNull(info.ContextMenuStrip); + Assert.IsNull(info.EnsureVisibleOnCreate); + Assert.IsNull(info.ChildNodeObjects); + Assert.IsNull(info.CanRename); + Assert.IsNull(info.OnNodeRenamed); + Assert.IsNull(info.CanRemove); + Assert.IsNull(info.OnNodeRemoved); + Assert.IsNull(info.CanDrop); + Assert.IsNull(info.CanInsert); + Assert.IsNull(info.OnDrop); + } + + [Test] + public void Text_Always_ReturnsNameFromMapData() + { + // Setup + var mapPointData = mocks.StrictMock(Enumerable.Empty(), "MapPointData"); + mocks.ReplayAll(); + + // Call + var text = info.Text(mapPointData); + + // Assert + Assert.AreEqual(mapPointData.Name, text); + } + + [Test] + public void Image_Always_ReturnsImageFromResource() + { + // Setup + mocks.ReplayAll(); + + // Call + var image = info.Image(null); + + // Assert + TestHelper.AssertImagesAreEqual(Resources.PointsIcon, image); + } + + [Test] + public void CanCheck_Always_ReturnsTrue() + { + // Setup + var lineData = mocks.StrictMock(Enumerable.Empty(), "test data"); + + mocks.ReplayAll(); + + // Call + var canCheck = info.CanCheck(lineData); + + // Assert + Assert.IsTrue(canCheck); + } + + [TestCase(true)] + [TestCase(false)] + public void IsChecked_Always_ReturnsAccordingToVisibleStateOfLineData(bool isVisible) + { + // Setup + var lineData = mocks.StrictMock(Enumerable.Empty(), "test data"); + lineData.IsVisible = isVisible; + + mocks.ReplayAll(); + + // Call + var canCheck = info.IsChecked(lineData); + + // Assert + Assert.AreEqual(isVisible, canCheck); + } + + [TestCase(true)] + [TestCase(false)] + public void OnNodeChecked_LineDataNodeWithoutParent_SetsLineDataVisibility(bool initialVisibleState) + { + // Setup + var lineData = mocks.StrictMock(Enumerable.Empty(), "test data"); + + mocks.ReplayAll(); + + lineData.IsVisible = initialVisibleState; + + // Call + info.OnNodeChecked(lineData, null); + + // Assert + Assert.AreEqual(!initialVisibleState, lineData.IsVisible); + } + + [TestCase(true)] + [TestCase(false)] + public void OnNodeChecked_LineDataNodeWithObservableParent_SetsLineDataVisibilityAndNotifiesParentObservers(bool initialVisibleState) + { + // Setup + var lineData = mocks.StrictMock(Enumerable.Empty(), "test data"); + + var observable = mocks.StrictMock(); + observable.Expect(o => o.NotifyObservers()); + + mocks.ReplayAll(); + + lineData.IsVisible = initialVisibleState; + + // Call + info.OnNodeChecked(lineData, observable); + + // Assert + Assert.AreEqual(!initialVisibleState, lineData.IsVisible); + } + + [Test] + public void CanDrag_Always_ReturnsTrue() + { + // Setup + var pointData = mocks.StrictMock(Enumerable.Empty(), "test data"); + + mocks.ReplayAll(); + + // Call + var canDrag = info.CanDrag(pointData, null); + + // Assert + Assert.IsTrue(canDrag); + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapPolygonDataTreeNodeInfoTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapPolygonDataTreeNodeInfoTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Map.Test/Legend/MapPolygonDataTreeNodeInfoTest.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,206 @@ +// 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; +using Core.Common.Controls.TreeView; +using Core.Common.Gui.ContextMenu; +using Core.Common.TestUtil; +using Core.Common.Utils.Reflection; +using Core.Components.Gis.Data; +using Core.Components.Gis.Features; +using Core.Plugins.Map.Legend; +using Core.Plugins.Map.Properties; +using NUnit.Framework; +using Rhino.Mocks; + +namespace Core.Plugins.Map.Test.Legend +{ + [TestFixture] + public class MapPolygonDataTreeNodeInfoTest + { + private MockRepository mocks; + private MapLegendView mapLegendView; + private TreeNodeInfo info; + + [SetUp] + public void SetUp() + { + var mockRepository = new MockRepository(); + var contextMenuBuilderProvider = mockRepository.StrictMock(); + var parentWindow = mockRepository.StrictMock(); + + mapLegendView = new MapLegendView(contextMenuBuilderProvider, parentWindow); + + TreeViewControl treeViewControl = TypeUtils.GetField(mapLegendView, "treeViewControl"); + Dictionary treeNodeInfoLookup = TypeUtils.GetField>(treeViewControl, "tagTypeTreeNodeInfoLookup"); + + info = treeNodeInfoLookup[typeof(MapPolygonData)]; + + mocks = mockRepository; + } + + [TearDown] + public void TearDown() + { + mapLegendView.Dispose(); + + mocks.VerifyAll(); + } + + [Test] + public void Initialized_Always_ExpectedPropertiesSet() + { + // Setup + mocks.ReplayAll(); + + // Assert + Assert.AreEqual(typeof(MapPolygonData), info.TagType); + Assert.IsNull(info.ForeColor); + Assert.IsNull(info.ContextMenuStrip); + Assert.IsNull(info.EnsureVisibleOnCreate); + Assert.IsNull(info.ChildNodeObjects); + Assert.IsNull(info.CanRename); + Assert.IsNull(info.OnNodeRenamed); + Assert.IsNull(info.CanRemove); + Assert.IsNull(info.OnNodeRemoved); + Assert.IsNull(info.CanDrop); + Assert.IsNull(info.CanInsert); + Assert.IsNull(info.OnDrop); + } + + [Test] + public void Text_Always_ReturnsNameFromMapData() + { + // Setup + var mapPolygonData = mocks.StrictMock(Enumerable.Empty(), "MapPolygonData"); + mocks.ReplayAll(); + + // Call + var text = info.Text(mapPolygonData); + + // Assert + Assert.AreEqual(mapPolygonData.Name, text); + } + + [Test] + public void Image_Always_ReturnsImageFromResource() + { + // Setup + mocks.ReplayAll(); + + // Call + var image = info.Image(null); + + // Assert + TestHelper.AssertImagesAreEqual(Resources.AreaIcon, image); + } + + [Test] + public void CanCheck_Always_ReturnsTrue() + { + // Setup + var lineData = mocks.StrictMock(Enumerable.Empty(), "test data"); + + mocks.ReplayAll(); + + // Call + var canCheck = info.CanCheck(lineData); + + // Assert + Assert.IsTrue(canCheck); + } + + [Test] + public void CanDrag_Always_ReturnsTrue() + { + // Setup + var polygonData = mocks.StrictMock(Enumerable.Empty(), "test data"); + + mocks.ReplayAll(); + + // Call + var canDrag = info.CanDrag(polygonData, null); + + // Assert + Assert.IsTrue(canDrag); + } + + [TestCase(true)] + [TestCase(false)] + public void IsChecked_Always_ReturnsAccordingToVisibleStateOfLineData(bool isVisible) + { + // Setup + var lineData = mocks.StrictMock(Enumerable.Empty(), "test data"); + lineData.IsVisible = isVisible; + + mocks.ReplayAll(); + + // Call + var canCheck = info.IsChecked(lineData); + + // Assert + Assert.AreEqual(isVisible, canCheck); + } + + [TestCase(true)] + [TestCase(false)] + public void OnNodeChecked_LineDataNodeWithoutParent_SetsLineDataVisibility(bool initialVisibleState) + { + // Setup + var lineData = mocks.StrictMock(Enumerable.Empty(), "test data"); + + mocks.ReplayAll(); + + lineData.IsVisible = initialVisibleState; + + // Call + info.OnNodeChecked(lineData, null); + + // Assert + Assert.AreEqual(!initialVisibleState, lineData.IsVisible); + } + + [TestCase(true)] + [TestCase(false)] + public void OnNodeChecked_LineDataNodeWithObservableParent_SetsLineDataVisibilityAndNotifiesParentObservers(bool initialVisibleState) + { + // Setup + var lineData = mocks.StrictMock(Enumerable.Empty(), "test data"); + + var observable = mocks.StrictMock(); + observable.Expect(o => o.NotifyObservers()); + + mocks.ReplayAll(); + + lineData.IsVisible = initialVisibleState; + + // Call + info.OnNodeChecked(lineData, observable); + + // Assert + Assert.AreEqual(!initialVisibleState, lineData.IsVisible); + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Map.Test/MapPluginTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Map.Test/MapPluginTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Map.Test/MapPluginTest.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,142 @@ +// 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.DotSpatial.Forms; +using Core.Plugins.DotSpatial.Test; +using Core.Plugins.Map.Legend; +using NUnit.Framework; +using Rhino.Mocks; + +namespace Core.Plugins.Map.Test +{ + [TestFixture] + public class MapPluginTest + { + [Test] + public void DefaultConstructor_Always_NoRibbonCommandHandlerSet() + { + // Call + using (var plugin = new MapPlugin()) + { + // Assert + Assert.IsInstanceOf(plugin); + Assert.IsNull(plugin.RibbonCommandHandler); + } + } + + [Test] + [RequiresSTA] + public void Activate_WithoutGui_ThrowsArgumentNullException() + { + // Setup + using (var plugin = new MapPlugin()) + { + // Call + TestDelegate test = () => plugin.Activate(); + + // Assert + ArgumentNullException exception = Assert.Throws(test); + Assert.AreEqual("viewController", exception.ParamName); + } + } + + [Test] + [RequiresSTA] + public void Activate_WithGui_AddsMapLegendView() + { + // Setup + var mocks = new MockRepository(); + + using (var plugin = new MapPlugin()) + { + var gui = mocks.StrictMock(); + var mainWindow = mocks.StrictMock(); + var viewHost = mocks.Stub(); + + gui.Expect(g => g.MainWindow).Return(mainWindow); + 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] + [RequiresSTA] + [TestCase(true)] + [TestCase(false)] + public void GivenConfiguredGui_WhenActiveDocumentViewChangesToViewWithMap_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 MapPlugin(); + var testMapView = new TestMapView(); + var map = new MapControl(); + IView viewMock = visible ? (IView) testMapView : new TestView(); + + testMapView.Data = map; + + 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.Map.Test/MapRibbonTest.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Map.Test/MapRibbonTest.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Map.Test/MapRibbonTest.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,388 @@ +// 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 System.Windows.Forms; +using Core.Common.Controls.Commands; +using Core.Common.Gui; +using Core.Common.Gui.ContextMenu; +using Core.Components.Gis.Forms; +using Core.Plugins.Map.Commands; +using Core.Plugins.Map.Legend; +using Fluent; +using NUnit.Framework; +using Rhino.Mocks; +using Button = Fluent.Button; +using ButtonBase = System.Windows.Controls.Primitives.ButtonBase; +using Control = System.Windows.Controls.Control; +using ToggleButton = Fluent.ToggleButton; + +namespace Core.Plugins.Map.Test +{ + [TestFixture] + public class MapRibbonTest + { + [Test] + [RequiresSTA] + public void DefaultContstructor_Always_CreatesControl() + { + // Setup + var ribbon = new MapRibbon(); + + // Call & Assert + Assert.IsInstanceOf(ribbon.GetRibbonControl()); + } + + [Test] + [RequiresSTA] + public void Commands_NoCommandsAssigned_ReturnsEmptyCommandsCollection() + { + // Setup + var ribbon = new MapRibbon(); + + // Call & Assert + CollectionAssert.IsEmpty(ribbon.Commands); + } + + [Test] + [RequiresSTA] + public void Commands_CommandsAssigned_ReturnsAssignedCommands() + { + // Setup + var mocks = new MockRepository(); + var viewController = mocks.Stub(); + var contextMenuBuilderProvider = mocks.StrictMock(); + var parentWindow = mocks.StrictMock(); + + mocks.ReplayAll(); + + var toggleLegendViewCommand = new ToggleMapLegendViewCommand(new MapLegendController(viewController, contextMenuBuilderProvider, parentWindow)); + + var ribbon = new MapRibbon + { + ToggleLegendViewCommand = toggleLegendViewCommand + }; + + // Call + var commands = ribbon.Commands.ToArray(); + + // Assert + CollectionAssert.AreEqual(new ICommand[] + { + toggleLegendViewCommand + }, commands); + mocks.VerifyAll(); + } + + [Test] + [RequiresSTA] + public void IsContextualTabVisible_Always_ReturnsFalse() + { + // Setup + var ribbon = new MapRibbon(); + + // Call & Assert + Assert.IsFalse(ribbon.IsContextualTabVisible(null, null)); + } + + [Test] + [RequiresSTA] + [TestCase(true)] + [TestCase(false)] + public void ValidateItems_WithOrWithoutMap_UpdatesMapContextualVisiblity(bool mapVisible) + { + // Setup + var mocks = new MockRepository(); + var map = mocks.Stub(); + + mocks.ReplayAll(); + + var ribbon = new MapRibbon(); + var contextualGroup = ribbon.GetRibbonControl().FindName("MapContextualGroup") as RibbonContextualTabGroup; + + // Precondition + Assert.IsNotNull(contextualGroup, "Ribbon should have a map contextual group button"); + + // Call + ribbon.Map = mapVisible ? map : null; + + // Assert + Assert.AreEqual(mapVisible ? 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 MapRibbon + { + 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_TogglePanningButtonIsCheckedEqualToPanningChecked(bool panningChecked) + { + // Setup + var mocks = new MockRepository(); + var map = mocks.DynamicMock(); + map.Stub(m => m.IsPanningEnabled).Return(panningChecked); + mocks.ReplayAll(); + + var ribbon = new MapRibbon + { + Map = map + }; + + var button = ribbon.GetRibbonControl().FindName("TogglePanningButton") as ToggleButton; + + // Precondition + Assert.IsNotNull(button, "Ribbon should have a toggle panning button."); + + // Call + ribbon.ValidateItems(); + + // Assert + Assert.AreEqual(panningChecked, button.IsChecked); + mocks.VerifyAll(); + } + + [Test] + [RequiresSTA] + [TestCase(true)] + [TestCase(false)] + public void ValidateItems_Always_ToggleRectangleZoomingButtonIsCheckedEqualToRectangleZoomChecked(bool rectangleZoomChecked) + { + // Setup + var mocks = new MockRepository(); + var map = mocks.DynamicMock(); + map.Stub(m => m.IsRectangleZoomingEnabled).Return(rectangleZoomChecked); + mocks.ReplayAll(); + + var ribbon = new MapRibbon + { + Map = map + }; + + var button = ribbon.GetRibbonControl().FindName("ToggleRectangleZoomingButton") as ToggleButton; + + // Precondition + Assert.IsNotNull(button, "Ribbon should have a toggle rectangle zooming button."); + + // Call + ribbon.ValidateItems(); + + // Assert + Assert.AreEqual(rectangleZoomChecked, button.IsChecked); + mocks.VerifyAll(); + } + + [Test] + [RequiresSTA] + [TestCase(true)] + [TestCase(false)] + public void ValidateItems_Always_ToggleMouseCoordinatesButtonIsCheckedEqualToMouseCoordinatesChecked(bool mouseCoordinatesChecked) + { + // Setup + var mocks = new MockRepository(); + var map = mocks.DynamicMock(); + map.Stub(m => m.IsMouseCoordinatesVisible).Return(mouseCoordinatesChecked); + mocks.ReplayAll(); + + var ribbon = new MapRibbon + { + Map = map + }; + + var button = ribbon.GetRibbonControl().FindName("ToggleMouseCoordinatesButton") as ToggleButton; + + // Precondition + Assert.IsNotNull(button, "Ribbon should have a toggle mouse coordinate visibility button."); + + // Call + ribbon.ValidateItems(); + + // Assert + Assert.AreEqual(mouseCoordinatesChecked, button.IsChecked); + 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 MapRibbon + { + 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 TogglePanning_OnClick_TogglePanning() + { + // Setup + var mocks = new MockRepository(); + var map = mocks.DynamicMock(); + map.Expect(c => c.TogglePanning()); + + mocks.ReplayAll(); + + var ribbon = new MapRibbon + { + Map = map + }; + 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 map = mocks.DynamicMock(); + map.Expect(c => c.ToggleRectangleZooming()); + + mocks.ReplayAll(); + + var ribbon = new MapRibbon + { + Map = map + }; + 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 ZoomToAll_OnClick_ZoomToAll() + { + // Setup + var mocks = new MockRepository(); + var map = mocks.DynamicMock(); + map.Expect(c => c.ZoomToAllVisibleLayers()); + + mocks.ReplayAll(); + + var ribbon = new MapRibbon + { + Map = map + }; + 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] + public void ToggleMouseCoordinatesVisibility_OnClick_ToggleMouseCoordinates() + { + // Setup + var mocks = new MockRepository(); + var map = mocks.DynamicMock(); + map.Expect(c => c.ToggleMouseCoordinatesVisibility()); + mocks.ReplayAll(); + + var ribbon = new MapRibbon + { + Map = map + }; + var button = ribbon.GetRibbonControl().FindName("ToggleMouseCoordinatesButton") as ToggleButton; + + // Precondition + Assert.IsNotNull(button, "Ribbon should have a toggle mouse coordinates button."); + + // Call + button.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent)); + + // Assert + mocks.VerifyAll(); + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Map.Test/Properties/AssemblyInfo.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Map.Test/Properties/AssemblyInfo.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Map.Test/Properties/AssemblyInfo.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -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.Map.Test")] +[assembly: AssemblyProduct("Core.Plugins.Map.Test")] +[assembly: Guid("93AB5AFB-F58E-4EC4-A25E-FF439B1895E7")] \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Map.Test/TestMapView.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Map.Test/TestMapView.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Map.Test/TestMapView.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -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.DotSpatial.Forms; +using Core.Components.Gis.Forms; + +namespace Core.Plugins.DotSpatial.Test +{ + /// + /// Simple implementation which can be used in tests. + /// + public class TestMapView : Control, IMapView + { + public object Data { get; set; } + + public IMapControl Map + { + get + { + return (MapControl) Data; + } + } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Map.Test/TestView.Designer.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Map.Test/TestView.Designer.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Map.Test/TestView.Designer.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,45 @@ +namespace Core.Plugins.DotSpatial.Test +{ + partial class TestView + { + /// + /// 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.SuspendLayout(); + // + // TestView + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Name = "TestView"; + this.ResumeLayout(false); + + } + + #endregion + + } +} Index: Core/Plugins/test/Core.Plugins.Map.Test/TestView.cs =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Map.Test/TestView.cs (revision 0) +++ Core/Plugins/test/Core.Plugins.Map.Test/TestView.cs (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,36 @@ +// 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.DotSpatial.Test +{ + public partial class TestView : UserControl, IView + { + public TestView() + { + InitializeComponent(); + } + + public object Data { get; set; } + } +} \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Map.Test/TestView.resx =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Map.Test/TestView.resx (revision 0) +++ Core/Plugins/test/Core.Plugins.Map.Test/TestView.resx (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.Map.Test/packages.config =================================================================== diff -u --- Core/Plugins/test/Core.Plugins.Map.Test/packages.config (revision 0) +++ Core/Plugins/test/Core.Plugins.Map.Test/packages.config (revision c5717eada81586126cbf53266abb0fc925382393) @@ -0,0 +1,29 @@ + + + + + + + + \ No newline at end of file Index: Ringtoets.sln =================================================================== diff -u -re3f2c52b847d4ff820d504e2e9ddf247de3ee609 -rc5717eada81586126cbf53266abb0fc925382393 --- Ringtoets.sln (.../Ringtoets.sln) (revision e3f2c52b847d4ff820d504e2e9ddf247de3ee609) +++ Ringtoets.sln (.../Ringtoets.sln) (revision c5717eada81586126cbf53266abb0fc925382393) @@ -210,10 +210,6 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Components.DotSpatial.Test", "Core\Components\test\Core.Components.DotSpatial.Test\Core.Components.DotSpatial.Test.csproj", "{DD7ECAFF-D8A1-4D92-99C0-27498ACB32D4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Plugins.DotSpatial", "Core\Plugins\src\Core.Plugins.DotSpatial\Core.Plugins.DotSpatial.csproj", "{610E0A9C-1997-4C43-A10E-39D4C66ADA93}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Plugins.DotSpatial.Test", "Core\Plugins\test\Core.Plugins.DotSpatial.Test\Core.Plugins.DotSpatial.Test.csproj", "{93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Components.Charting.Test", "Core\Components\test\Core.Components.Charting.Test\Core.Components.Charting.Test.csproj", "{F40A7DC1-A697-41A7-8676-6C0AD8274FB4}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Components.Charting.TestUtil", "Core\Components\test\Core.Components.Charting.TestUtil\Core.Components.Charting.TestUtil.csproj", "{E900A014-CA87-4374-87F0-813D653A9698}" @@ -374,6 +370,10 @@ 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 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Plugins.Map", "Core\Plugins\src\Core.Plugins.Map\Core.Plugins.Map.csproj", "{610E0A9C-1997-4C43-A10E-39D4C66ADA93}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Plugins.Map.Test", "Core\Plugins\test\Core.Plugins.Map.Test\Core.Plugins.Map.Test.csproj", "{93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution CreateInstaller|x86 = CreateInstaller|x86 @@ -880,24 +880,6 @@ {DD7ECAFF-D8A1-4D92-99C0-27498ACB32D4}.Release|x86.Build.0 = Release|x86 {DD7ECAFF-D8A1-4D92-99C0-27498ACB32D4}.ReleaseForCodeCoverage|x86.ActiveCfg = ReleaseForCodeCoverage|x86 {DD7ECAFF-D8A1-4D92-99C0-27498ACB32D4}.ReleaseForCodeCoverage|x86.Build.0 = ReleaseForCodeCoverage|x86 - {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.CreateInstaller|x86.ActiveCfg = Release|x86 - {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.CreateInstaller|x86.Build.0 = Release|x86 - {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.CreateInstallerWithDemoProject|x86.ActiveCfg = Release|x86 - {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.CreateInstallerWithDemoProject|x86.Build.0 = Release|x86 - {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.Debug|x86.ActiveCfg = Debug|x86 - {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.Debug|x86.Build.0 = Debug|x86 - {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.Release|x86.ActiveCfg = Release|x86 - {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.Release|x86.Build.0 = Release|x86 - {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.ReleaseForCodeCoverage|x86.ActiveCfg = ReleaseForCodeCoverage|x86 - {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.ReleaseForCodeCoverage|x86.Build.0 = ReleaseForCodeCoverage|x86 - {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}.CreateInstaller|x86.ActiveCfg = Release|x86 - {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}.CreateInstallerWithDemoProject|x86.ActiveCfg = Release|x86 - {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}.Debug|x86.ActiveCfg = Debug|x86 - {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}.Debug|x86.Build.0 = Debug|x86 - {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}.Release|x86.ActiveCfg = Release|x86 - {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}.Release|x86.Build.0 = Release|x86 - {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}.ReleaseForCodeCoverage|x86.ActiveCfg = ReleaseForCodeCoverage|x86 - {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}.ReleaseForCodeCoverage|x86.Build.0 = ReleaseForCodeCoverage|x86 {F40A7DC1-A697-41A7-8676-6C0AD8274FB4}.CreateInstaller|x86.ActiveCfg = Release|x86 {F40A7DC1-A697-41A7-8676-6C0AD8274FB4}.CreateInstallerWithDemoProject|x86.ActiveCfg = Release|x86 {F40A7DC1-A697-41A7-8676-6C0AD8274FB4}.Debug|x86.ActiveCfg = Debug|x86 @@ -1489,6 +1471,24 @@ {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 + {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.CreateInstaller|x86.ActiveCfg = Release|x86 + {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.CreateInstaller|x86.Build.0 = Release|x86 + {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.CreateInstallerWithDemoProject|x86.ActiveCfg = Release|x86 + {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.CreateInstallerWithDemoProject|x86.Build.0 = Release|x86 + {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.Debug|x86.ActiveCfg = Debug|x86 + {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.Debug|x86.Build.0 = Debug|x86 + {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.Release|x86.ActiveCfg = Release|x86 + {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.Release|x86.Build.0 = Release|x86 + {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.ReleaseForCodeCoverage|x86.ActiveCfg = ReleaseForCodeCoverage|x86 + {610E0A9C-1997-4C43-A10E-39D4C66ADA93}.ReleaseForCodeCoverage|x86.Build.0 = ReleaseForCodeCoverage|x86 + {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}.CreateInstaller|x86.ActiveCfg = Release|x86 + {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}.CreateInstallerWithDemoProject|x86.ActiveCfg = Release|x86 + {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}.Debug|x86.ActiveCfg = Debug|x86 + {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}.Debug|x86.Build.0 = Debug|x86 + {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}.Release|x86.ActiveCfg = Release|x86 + {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}.Release|x86.Build.0 = Release|x86 + {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}.ReleaseForCodeCoverage|x86.ActiveCfg = ReleaseForCodeCoverage|x86 + {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7}.ReleaseForCodeCoverage|x86.Build.0 = ReleaseForCodeCoverage|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1531,12 +1531,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} - {610E0A9C-1997-4C43-A10E-39D4C66ADA93} = {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} {8BD31773-6F6D-42EE-810D-0A5DAD809F9D} = {209AC67F-DCFA-4355-B45A-9D9A2E4593D2} {07206938-9671-4DC7-BDE4-35B0F6E20DBC} = {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} + {93AB5AFB-F58E-4EC4-A25E-FF439B1895E7} = {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}