Esanders has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/166768

Change subject: Allow tools to specify which selection types they support
......................................................................

Allow tools to specify which selection types they support

Change-Id: I3adb071b04461f630d1e2f66f3c141f297a3b91e
---
M src/ui/tools/ve.ui.AnnotationTool.js
M src/ui/tools/ve.ui.ClearAnnotationTool.js
M src/ui/tools/ve.ui.FormatTool.js
M src/ui/tools/ve.ui.IndentationTool.js
M src/ui/tools/ve.ui.InspectorTool.js
M src/ui/tools/ve.ui.ListTool.js
M src/ui/ve.ui.Tool.js
7 files changed, 16 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor 
refs/changes/68/166768/1

diff --git a/src/ui/tools/ve.ui.AnnotationTool.js 
b/src/ui/tools/ve.ui.AnnotationTool.js
index c9b4903..c758abc 100644
--- a/src/ui/tools/ve.ui.AnnotationTool.js
+++ b/src/ui/tools/ve.ui.AnnotationTool.js
@@ -35,7 +35,7 @@
  */
 ve.ui.AnnotationTool.static.annotation = { name: '' };
 
-ve.ui.AnnotationTool.static.requiresRange = true;
+ve.ui.AnnotationTool.static.requiresSelection = [ 'linear' ];
 
 ve.ui.AnnotationTool.static.deactivateOnSelect = false;
 
diff --git a/src/ui/tools/ve.ui.ClearAnnotationTool.js 
b/src/ui/tools/ve.ui.ClearAnnotationTool.js
index 494bc64..9ea0a25 100644
--- a/src/ui/tools/ve.ui.ClearAnnotationTool.js
+++ b/src/ui/tools/ve.ui.ClearAnnotationTool.js
@@ -36,7 +36,7 @@
 ve.ui.ClearAnnotationTool.static.title =
        OO.ui.deferMsg( 'visualeditor-clearbutton-tooltip' );
 
-ve.ui.ClearAnnotationTool.static.requiresRange = true;
+ve.ui.ClearAnnotationTool.static.requiresSelection = [ 'linear' ];
 
 ve.ui.ClearAnnotationTool.static.commandName = 'clear';
 
diff --git a/src/ui/tools/ve.ui.FormatTool.js b/src/ui/tools/ve.ui.FormatTool.js
index 7f6059f..5bbbfc7 100644
--- a/src/ui/tools/ve.ui.FormatTool.js
+++ b/src/ui/tools/ve.ui.FormatTool.js
@@ -40,7 +40,7 @@
  */
 ve.ui.FormatTool.static.format = null;
 
-ve.ui.FormatTool.static.requiresRange = true;
+ve.ui.FormatTool.static.requiresSelection = [ 'linear' ];
 
 /* Methods */
 
diff --git a/src/ui/tools/ve.ui.IndentationTool.js 
b/src/ui/tools/ve.ui.IndentationTool.js
index e9e6fe1..d65883e 100644
--- a/src/ui/tools/ve.ui.IndentationTool.js
+++ b/src/ui/tools/ve.ui.IndentationTool.js
@@ -25,7 +25,7 @@
 
 /* Static Properties */
 
-ve.ui.IndentationTool.static.requiresRange = true;
+ve.ui.IndentationTool.static.requiresSelection = [ 'linear' ];
 
 /* Methods */
 
diff --git a/src/ui/tools/ve.ui.InspectorTool.js 
b/src/ui/tools/ve.ui.InspectorTool.js
index d3444e9..bd60083 100644
--- a/src/ui/tools/ve.ui.InspectorTool.js
+++ b/src/ui/tools/ve.ui.InspectorTool.js
@@ -36,7 +36,7 @@
  */
 ve.ui.InspectorTool.static.modelClasses = [];
 
-ve.ui.InspectorTool.static.requiresRange = true;
+ve.ui.InspectorTool.static.requiresSelection = [ 'linear' ];
 
 ve.ui.InspectorTool.static.deactivateOnSelect = false;
 
diff --git a/src/ui/tools/ve.ui.ListTool.js b/src/ui/tools/ve.ui.ListTool.js
index d122267..b87aa82 100644
--- a/src/ui/tools/ve.ui.ListTool.js
+++ b/src/ui/tools/ve.ui.ListTool.js
@@ -38,7 +38,7 @@
  */
 ve.ui.ListTool.static.style = '';
 
-ve.ui.ListTool.static.requiresRange = true;
+ve.ui.ListTool.static.requiresSelection = [ 'linear' ];
 
 ve.ui.ListTool.static.deactivateOnSelect = false;
 
diff --git a/src/ui/ve.ui.Tool.js b/src/ui/ve.ui.Tool.js
index 1d553d2..ed6b4e6 100644
--- a/src/ui/ve.ui.Tool.js
+++ b/src/ui/ve.ui.Tool.js
@@ -27,10 +27,13 @@
 /* Static Properties */
 
 /**
- * This tool requires this surface to be focused to work
- * @type {boolean}
+ * Selection types this tool requires.
+ *
+ * If the tool doesn't require a specific selection type, use null.
+ *
+ * @type {string[]|null}
  */
-ve.ui.Tool.static.requiresRange = false;
+ve.ui.Tool.static.requiresSelection = null;
 
 /**
  * Command to execute when tool is selected.
@@ -72,7 +75,10 @@
  * @param {Object} direction Context direction with 'inline' & 'block' 
properties
  */
 ve.ui.Tool.prototype.onUpdateState = function ( fragment ) {
-       this.setDisabled( this.constructor.static.requiresRange && 
fragment.isNull() );
+       this.setDisabled(
+               this.constructor.static.requiresSelection &&
+               ve.indexOf( fragment.getSelection().constructor.static.name, 
this.constructor.static.requiresSelection ) === -1
+       );
 };
 
 /**

-- 
To view, visit https://gerrit.wikimedia.org/r/166768
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3adb071b04461f630d1e2f66f3c141f297a3b91e
Gerrit-PatchSet: 1
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <esand...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to