Skip to content
This repository was archived by the owner on Jan 1, 2021. It is now read-only.

Commit c81f9b2

Browse files
committed
New Bookmarks menu
1 parent 1cf6a54 commit c81f9b2

File tree

5 files changed

+155
-1
lines changed

5 files changed

+155
-1
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!-- http://blog.flexexamples.com/2010/04/09/adding-a-delete-button-in-the-hovered-state-of-a-spark-list-control-item-renderer-in-flex-4/ -->
3+
<s:ItemRenderer name="DeletableListItemRenderer"
4+
xmlns:fx="http://ns.adobe.com/mxml/2009"
5+
xmlns:s="library://ns.adobe.com/flex/spark"
6+
xmlns:mx="library://ns.adobe.com/flex/mx"
7+
autoDrawBackground="true"
8+
minHeight="24">
9+
<s:states>
10+
<s:State name="normal" />
11+
<s:State name="hovered" />
12+
<s:State name="selected" />
13+
</s:states>
14+
15+
<fx:Script>
16+
<![CDATA[
17+
import mx.controls.Alert;
18+
import mx.events.CloseEvent;
19+
20+
import spark.components.List;
21+
22+
protected function button1_clickHandler(evt:MouseEvent):void {
23+
Alert.show(data.label,
24+
"Are you sure you want to delete this item?",
25+
Alert.YES|Alert.CANCEL,
26+
null,
27+
alrt_closeHandler);
28+
}
29+
30+
protected function alrt_closeHandler(evt:CloseEvent):void {
31+
switch (evt.detail) {
32+
case Alert.YES:
33+
case Alert.OK:
34+
Object(owner).dataProvider.removeItemAt(itemIndex);
35+
break;
36+
case Alert.CANCEL:
37+
case Alert.NO:
38+
Object(owner).selectedIndex = -1;
39+
break;
40+
default:
41+
break;
42+
}
43+
}
44+
]]>
45+
</fx:Script>
46+
47+
<s:HGroup width="100%" height="100%"
48+
verticalAlign="middle"
49+
paddingLeft="2" paddingRight="2"
50+
paddingTop="2" paddingBottom="2">
51+
<s:Label id="lbl" text="{data.name}" width="100%" />
52+
<s:Image id="btn" includeIn="hovered,selected" source="@Embed('../../../embedded/delete_small.svg')" click="button1_clickHandler(event)" />
53+
</s:HGroup>
54+
55+
</s:ItemRenderer>
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<s:BorderContainer
3+
xmlns:controls="net.systemeD.controls.*"
4+
xmlns:fx="http://ns.adobe.com/mxml/2009"
5+
xmlns:s="library://ns.adobe.com/flex/spark" >
6+
7+
<s:layout>
8+
<s:VerticalLayout
9+
paddingLeft="5" paddingRight="5"
10+
paddingTop="5" paddingBottom="5"/>
11+
</s:layout>
12+
13+
<s:List width="100%" height="100%" id="bookmarkMenu"
14+
labelField="name"
15+
itemRenderer="net.systemeD.controls.DeletableListItemRenderer"
16+
change="FlexGlobals.topLevelApplication.bookmarkButton.close(); goToBookmark(event);"
17+
dataProvider="{bookmarks}">
18+
<s:layout>
19+
<s:VerticalLayout requestedRowCount="{bookmarks.length}" gap="0" rowHeight="20" variableRowHeight="false" horizontalAlign="contentJustify"/>
20+
</s:layout>
21+
</s:List>
22+
23+
<s:Button id="addButton" label="Add..." click="FlexGlobals.topLevelApplication.bookmarkButton.close(); addBookmark();" />
24+
25+
<fx:Script><![CDATA[
26+
import net.systemeD.halcyon.*;
27+
import net.systemeD.halcyon.connection.*;
28+
import net.systemeD.potlatch2.*;
29+
import net.systemeD.potlatch2.collections.Stylesheets;
30+
import net.systemeD.potlatch2.dialogs.*;
31+
import net.systemeD.controls.DeletableListItemRenderer;
32+
import mx.core.*;
33+
import spark.events.IndexChangeEvent;
34+
import mx.collections.ArrayCollection;
35+
import mx.managers.PopUpManager;
36+
37+
[Bindable]
38+
public var bookmarks:ArrayCollection = new ArrayCollection([]);
39+
// of format { name: "Bookmark 1", lat: 53, lon: 0 }, { name: "Bookmark 2", lat: 54, lon: -1 }
40+
41+
private var userState:SharedObject=SharedObject.getLocal("user_state","/");
42+
43+
public function init():BookmarkSelector {
44+
if (userState.data['bookmarks']) {
45+
bookmarks = new ArrayCollection(userState.data['bookmarks']);
46+
}
47+
return this;
48+
}
49+
50+
private function goToBookmark(event:IndexChangeEvent):void {
51+
FlexGlobals.topLevelApplication.theController.map.moveMapFromLatLon(event.currentTarget.selectedItem.lat, event.currentTarget.selectedItem.lon);
52+
}
53+
54+
private function addBookmark():void {
55+
var dialog:BookmarkNameDialog = BookmarkNameDialog(
56+
PopUpManager.createPopUp(Application(FlexGlobals.topLevelApplication), BookmarkNameDialog, true));
57+
PopUpManager.centerPopUp(dialog);
58+
// save to SharedObject
59+
userState.setProperty("bookmarks",bookmarks.source);
60+
try { userState.flush(); } catch (e:Error) {}
61+
}
62+
]]></fx:Script>
63+
</s:BorderContainer>
64+
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<mx:TitleWindow
3+
xmlns:fx="http://ns.adobe.com/mxml/2009"
4+
xmlns:mx="library://ns.adobe.com/flex/mx"
5+
xmlns:potlatch2="net.systemeD.potlatch2.*"
6+
title="New Bookmark" width="350" height="160"
7+
creationComplete="bookmarkName.setFocus()"
8+
showCloseButton="true" close="PopUpManager.removePopUp(this);">
9+
10+
<mx:HBox paddingLeft="3" paddingTop="4">
11+
<mx:Label text="Bookmark name: " />
12+
<mx:TextInput id="bookmarkName" enter="addBookmark();" />
13+
</mx:HBox>
14+
<mx:ControlBar>
15+
<mx:Spacer width="100%"/>
16+
<mx:Button label="Add" click="addBookmark();" styleName="titleWindowButton" />
17+
</mx:ControlBar>
18+
<fx:Script><![CDATA[
19+
import net.systemeD.halcyon.*;
20+
import net.systemeD.halcyon.connection.*;
21+
import net.systemeD.potlatch2.*;
22+
import mx.managers.PopUpManager;
23+
import mx.core.FlexGlobals;
24+
25+
public function addBookmark():void {
26+
var controller:EditController = FlexGlobals.topLevelApplication.theController;
27+
FlexGlobals.topLevelApplication.bookmarkButton.popUp.bookmarks.addItem({ name: bookmarkName.text, lat: controller.map.centre_lat, lon: controller.map.centre_lon });
28+
PopUpManager.removePopUp(this);
29+
}
30+
31+
]]></fx:Script>
32+
</mx:TitleWindow>
33+

potlatch2.mxml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@
6262
</fx:Array>
6363
</mx:dataProvider>
6464
</mx:PopUpMenuButton>
65+
<mx:PopUpButton id="bookmarkButton" label="Bookmarks" openAlways="true" styleName="appBarButton" open="disableMapMouse();" close="enableMapMouse();"
66+
creationComplete="bookmarkButton.popUp = new BookmarkSelector().init();"/>
6567
<mx:Button id="tasksButton" label="Tasks" click="new TasksDialog().init(theController);" styleName="appBarButton" toolTip="Load tasks file" />
6668
<mx:Button id="optionsButton" label="Options" click="new OptionsDialog().init();" styleName="appBarButton" />
6769
</mx:ApplicationControlBar>

styles/Application.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ mx|VScrollBar {
4545
thumbOffset: 1;
4646
}
4747

48-
mx|CheckBox, mx|List, p2|StyleSelector, p2|BackgroundSelector { color: black; }
48+
mx|CheckBox, mx|List, p2|BookmarkSelector, p2|StyleSelector, p2|BackgroundSelector { color: black; textAlign: left; }
4949

5050
mx|TabNavigator {
5151
horizontalGap: 3;

0 commit comments

Comments
 (0)