mirror of
https://github.com/FoggedLens/iD.git
synced 2026-02-12 16:52:50 +00:00
Tooltip for tags/shape
This commit is contained in:
35
js/iD/controller/edit/EditBaseState.js
Normal file
35
js/iD/controller/edit/EditBaseState.js
Normal file
@@ -0,0 +1,35 @@
|
||||
// iD/controller/edit/EditBaseState.js
|
||||
|
||||
define(['dojo/_base/declare','dijit/TooltipDialog','dijit/popup',
|
||||
'iD/controller/ControllerState'], function(declare){
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// EditBaseState class - provides shared UI functions to edit mode states
|
||||
|
||||
declare("iD.controller.edit.EditBaseState", [iD.controller.ControllerState], {
|
||||
|
||||
editortooltip: null,
|
||||
|
||||
constructor:function() {
|
||||
},
|
||||
|
||||
openEditorTooltip:function(x,y) {
|
||||
console.log("opening at "+x+","+y);
|
||||
editortooltip = new dijit.TooltipDialog({
|
||||
content: "Fred's House<br/>"+
|
||||
"<button data-dojo-type='dijit.form.Button' type='submit'>Edit tags</button> "+
|
||||
"<button data-dojo-type='dijit.form.Button' type='submit'>Edit shape</button> ",
|
||||
autoFocus: false
|
||||
});
|
||||
dijit.popup.open({ popup: editortooltip, x: x, y: y });
|
||||
},
|
||||
|
||||
closeEditorTooltip:function() {
|
||||
dijit.popup.close(editortooltip);
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// End of module
|
||||
});
|
||||
@@ -1,7 +1,7 @@
|
||||
// iD/controller/edit/NoSelection.js
|
||||
|
||||
define(['dojo/_base/declare',
|
||||
'iD/controller/ControllerState',
|
||||
'iD/controller/edit/EditBaseState',
|
||||
'iD/controller/edit/SelectedWay',
|
||||
'iD/controller/edit/SelectedWayNode',
|
||||
'iD/controller/edit/SelectedPOINode',
|
||||
@@ -10,7 +10,7 @@ define(['dojo/_base/declare',
|
||||
// ----------------------------------------------------------------------
|
||||
// ControllerState base class
|
||||
|
||||
declare("iD.controller.edit.NoSelection", [iD.controller.ControllerState], {
|
||||
declare("iD.controller.edit.NoSelection", [iD.controller.edit.EditBaseState], {
|
||||
|
||||
constructor:function() {
|
||||
},
|
||||
@@ -30,7 +30,7 @@ declare("iD.controller.edit.NoSelection", [iD.controller.ControllerState], {
|
||||
if (ways.length==0) { return new iD.controller.edit.SelectedPOINode(entity); }
|
||||
else { return new iD.controller.edit.SelectedWayNode(entity,ways[0]); }
|
||||
case 'way':
|
||||
return new iD.controller.edit.SelectedWay(entityUI.entity);
|
||||
return new iD.controller.edit.SelectedWay(entityUI.entity, event);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// iD/controller/edit/SelectedPOINode.js
|
||||
|
||||
define(['dojo/_base/declare','iD/controller/ControllerState'], function(declare){
|
||||
define(['dojo/_base/declare','iD/controller/edit/EditBaseState'], function(declare){
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// SelectedPOINode class
|
||||
|
||||
declare("iD.controller.edit.SelectedPOINode", [iD.controller.ControllerState], {
|
||||
declare("iD.controller.edit.SelectedPOINode", [iD.controller.edit.EditBaseState], {
|
||||
|
||||
node: null,
|
||||
nodeUI: null,
|
||||
@@ -14,13 +14,17 @@ declare("iD.controller.edit.SelectedPOINode", [iD.controller.ControllerState], {
|
||||
this.node=_node;
|
||||
},
|
||||
enterState:function() {
|
||||
this.nodeUI=this.controller.map.getUI(this.node);
|
||||
var map=this.controller.map;
|
||||
this.nodeUI=map.getUI(this.node);
|
||||
this.nodeUI.setStateClass('selected');
|
||||
this.nodeUI.redraw();
|
||||
this.openEditorTooltip(map.lon2screen(this.node.lon),
|
||||
map.lat2screen(this.node.lat));
|
||||
},
|
||||
exitState:function() {
|
||||
this.nodeUI.resetStateClass('selected');
|
||||
this.nodeUI.redraw();
|
||||
this.closeEditorTooltip();
|
||||
},
|
||||
|
||||
processMouseEvent:function(event,entityUI) {
|
||||
@@ -31,7 +35,7 @@ declare("iD.controller.edit.SelectedPOINode", [iD.controller.ControllerState], {
|
||||
switch (entityType) {
|
||||
case null: return new iD.controller.edit.NoSelection();
|
||||
case 'node': return new iD.controller.edit.SelectedPOINode(entityUI.entity);
|
||||
case 'way': return new iD.controller.edit.SelectedWay(entityUI.entity);
|
||||
case 'way': return new iD.controller.edit.SelectedWay(entityUI.entity, event);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
|
||||
@@ -1,28 +1,32 @@
|
||||
// iD/controller/edit/SelectedWay.js
|
||||
|
||||
define(['dojo/_base/declare','iD/controller/ControllerState'], function(declare){
|
||||
define(['dojo/_base/declare','iD/controller/edit/EditBaseState'], function(declare){
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// SelectedWay class
|
||||
|
||||
declare("iD.controller.edit.SelectedWay", [iD.controller.ControllerState], {
|
||||
declare("iD.controller.edit.SelectedWay", [iD.controller.edit.EditBaseState], {
|
||||
|
||||
way: null,
|
||||
wayUI: null,
|
||||
entryevent: null,
|
||||
|
||||
constructor:function(_way) {
|
||||
constructor:function(_way,_event) {
|
||||
this.way=_way;
|
||||
this.entryevent=_event;
|
||||
},
|
||||
enterState:function() {
|
||||
this.wayUI=this.controller.map.getUI(this.way);
|
||||
this.wayUI.setStateClass('selected');
|
||||
this.wayUI.setStateClass('shownodes');
|
||||
this.openEditorTooltip(this.entryevent.clientX, this.entryevent.clientY);
|
||||
this.wayUI.redraw();
|
||||
},
|
||||
exitState:function() {
|
||||
this.wayUI.resetStateClass('selected');
|
||||
this.wayUI.resetStateClass('shownodes');
|
||||
this.wayUI.redraw();
|
||||
this.closeEditorTooltip();
|
||||
},
|
||||
|
||||
processMouseEvent:function(event,entityUI) {
|
||||
@@ -39,7 +43,7 @@ declare("iD.controller.edit.SelectedWay", [iD.controller.ControllerState], {
|
||||
else if (ways.length==0) { return new iD.controller.edit.SelectedPOINode(entity); }
|
||||
else { return new iD.controller.edit.SelectedWayNode(entity,ways[0]); }
|
||||
case 'way':
|
||||
return new iD.controller.edit.SelectedWay(entityUI.entity);
|
||||
return new iD.controller.edit.SelectedWay(entityUI.entity, event);
|
||||
}
|
||||
} else {
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// iD/controller/edit/SelectedWayNode.js
|
||||
|
||||
define(['dojo/_base/declare','iD/controller/ControllerState'], function(declare){
|
||||
define(['dojo/_base/declare','iD/controller/edit/EditBaseState'], function(declare){
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// SelectedWayNode class
|
||||
|
||||
declare("iD.controller.edit.SelectedWayNode", [iD.controller.ControllerState], {
|
||||
declare("iD.controller.edit.SelectedWayNode", [iD.controller.edit.EditBaseState], {
|
||||
|
||||
node: null,
|
||||
way: null,
|
||||
@@ -15,12 +15,17 @@ declare("iD.controller.edit.SelectedWayNode", [iD.controller.ControllerState], {
|
||||
this.way=_way;
|
||||
},
|
||||
enterState:function() {
|
||||
this.controller.map.getUI(this.way ).setStateClass('shownodes').redraw();
|
||||
this.controller.map.getUI(this.node).setStateClass('selected' ).redraw();
|
||||
var map=this.controller.map;
|
||||
map.getUI(this.way ).setStateClass('shownodes').redraw();
|
||||
map.getUI(this.node).setStateClass('selected' ).redraw();
|
||||
this.openEditorTooltip(map.lon2screen(this.node.lon),
|
||||
map.lat2screen(this.node.lat));
|
||||
},
|
||||
exitState:function() {
|
||||
this.controller.map.getUI(this.way ).resetStateClass('shownodes').redraw();
|
||||
this.controller.map.getUI(this.node).resetStateClass('selected' ).redraw();
|
||||
var map=this.controller.map;
|
||||
map.getUI(this.way ).resetStateClass('shownodes').redraw();
|
||||
map.getUI(this.node).resetStateClass('selected' ).redraw();
|
||||
this.closeEditorTooltip();
|
||||
},
|
||||
|
||||
processMouseEvent:function(event,entityUI) {
|
||||
@@ -37,7 +42,7 @@ declare("iD.controller.edit.SelectedWayNode", [iD.controller.ControllerState], {
|
||||
else if (ways.length==0) { return new iD.controller.edit.SelectedPOINode(entity); }
|
||||
else { return new iD.controller.edit.SelectedWayNode(entity,ways[0]); }
|
||||
case 'way':
|
||||
return new iD.controller.edit.SelectedWay(entityUI.entity);
|
||||
return new iD.controller.edit.SelectedWay(entityUI.entity, event);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
|
||||
@@ -94,12 +94,12 @@ declare("iD.controller.shape.DrawWay", [iD.controller.ControllerState], {
|
||||
if (entity==this.getDrawingNode()) {
|
||||
// Double-click, so complete drawing
|
||||
this.controller.stepper.highlight('tag');
|
||||
return new iD.controller.edit.SelectedWay(this.way);
|
||||
return new iD.controller.edit.SelectedWay(this.way, event);
|
||||
} else if (entity==this.getStartNode()) {
|
||||
// Start of this way, so complete drawing
|
||||
this.appendNode(entity, this.undoAdder() );
|
||||
this.controller.stepper.highlight('tag');
|
||||
return new iD.controller.edit.SelectedWay(this.way);
|
||||
return new iD.controller.edit.SelectedWay(this.way, event);
|
||||
} else {
|
||||
// Add to way
|
||||
this.appendNode(entity, this.undoAdder() );
|
||||
|
||||
@@ -424,10 +424,13 @@ declare("iD.renderer.Map", null, {
|
||||
coord2latp:function(a) { return a/-this.scalefactor+this.baselatp; },
|
||||
lon2coord:function(a) { return (a-this.baselon)*this.scalefactor; },
|
||||
coord2lon:function(a) { return a/this.scalefactor+this.baselon; },
|
||||
lon2screen:function(a) { return this.lon2coord(a) + domGeom.getMarginBox(this.div).l + this.containerx; },
|
||||
|
||||
lat2latp:function(a) { return 180/Math.PI * Math.log(Math.tan(Math.PI/4+a*(Math.PI/180)/2)); },
|
||||
latp2lat:function(a) { return 180/Math.PI * (2 * Math.atan(Math.exp(a*Math.PI/180)) - Math.PI/2); },
|
||||
lat2coord:function(a) { return -(this.lat2latp(a)-this.baselatp)*this.scalefactor; },
|
||||
coord2lat:function(a) { return this.latp2lat(a/-this.scalefactor+this.baselatp); },
|
||||
lat2screen:function(a) { return this.lat2coord(a) + domGeom.getMarginBox(this.div).t + this.containery; },
|
||||
|
||||
lon2tile:function(a) { return (Math.floor((a+180)/360*Math.pow(2,this.scale))); },
|
||||
lat2tile:function(a) { return (Math.floor((1-Math.log(Math.tan(a*Math.PI/180) + 1/Math.cos(a*Math.PI/180))/Math.PI)/2 *Math.pow(2,this.scale))); },
|
||||
|
||||
Reference in New Issue
Block a user