Erweiterung der GUI

Im letzten Artikel habe ich einen ersten Entwurf der GUI für den G#.Viewer mit der IDE SharpDevelop angefertigt. Diesen Entwurf möchte ich nun etwas erweitern. Was noch gefehlt hat war eine Übersicht der Layer, die in den Viewer geladen werden. In dieser Übersicht sollen die Layer verschiebbar sein – also die Reihenfolge geändert werden können, in der sie im Kartenbild überlagert werden und die Sichtbarkeit verändert werden können. Außerdem braucht man die eine Layerübersicht wenn man Funktionen auf einzelne Layer beziehen möchte – beispielsweise das Zoomen auf eine bestimmte Ebene oder etwa auch das Entfernen einer Ebene aus dem Viewer.

Deshalb holen wir uns jetzt noch ein TreeView-Control hinzu. Mit Hilfe eines zusätzlichen SplitContainers bauen wir den TreeView in unseren GIS-Viewer ein. Anschließend müssen die Eigenschaften bearbeitet werden, so dass aus dem TreeView auch eine Layerübersicht werden kann. Die weniger interessanten Eigenschaften des TreeViews habe ich ausgeblendet. Ansonsten sollten die fett markierten Eigenschaften wie folgt aussehen:

  • „Verhalten – AllowDrop: True“:

Diese Einstellung lässt das Drag&Drop-Verhalten auf diesem Steuerelement zu. Wir brauchen dies, um die Layerreihenfolge in der Übersicht ändern zu können.

  • „Verhalten – Hide Selection: False“

Diese Option wird benötigt, wenn eine Funktion auf einen bestimmten Layer ausgeführt werden soll. Eigentlich ist dies ja nur eine optische Sache. Setzt man den Wert auf „True“ und verlässt man das Steuerelement mit der Maus nach dem Selektieren eines Knotens, wird das selektierte Element zwar intern noch selektiert – die grafische Hervorhebung durch das Ändern der Hintergrundfarbe wird jedoch dann unterdrückt.

Ansonsten kümmern wir uns noch um den Wurzelknoten des TreeViews. Dieser soll „Layers“ heissen und alle dazugeladenen Ebenen als Knoten beinhalten. Den Wurzelknoten können wir über die Eigenschaft „Nodes“ des TreeView-Controls hinzufügen und bearbeiten.

G#.Viewer - root node

OpenFileDialog

Da wir in unseren GIS-Viewer benutzergesteuert Daten laden wollen, benötigen wir auch einen OpenFileDialog aus dem .NET-Framework. Dieser ist schnell bei den Tools per Drag&Drop in die GUI-Ansicht eingefügt. Wichtig sind hier nur die Filteroptionen. Fürs erste sollen nur ESRI Shapefiles geladen werden sollen. Diese Einstellung nehmen wir bei den Eigenschaften des OpenFileDialogs vor:

Bei Filter sollte folgendes eingegeben werden:

ESRI Shapefile|*.shp

Damit wird im Benutzerdialog „ESRI Shapefile“ angezeigt. Gefiltert wird dann im Windows Explorer nach *.shp-Dateien. Nun sind wir mit dem Teil der GUI fertig. Weiter gehts im nächsten Teil mit etwas Code..