Esanders has uploaded a new change for review.

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

Change subject: Split out linear context from context
......................................................................

Split out linear context from context

This makes the table context cleaner, and allows
us to simplify mobile overrides.

In mobile use icons for edit and delete to save space.

Change-Id: Ie157735ed96472f2a05ac85717bf25fccdf52171
---
M build/modules.json
M demos/ve/desktop.html
M demos/ve/mobile.html
M i18n/en.json
M i18n/qqq.json
M src/themes/mediawiki/widgets.css
M src/ui/contextitems/ve.ui.AlienContextItem.js
M src/ui/contextitems/ve.ui.AlignableContextItem.js
M src/ui/contextitems/ve.ui.CommentContextItem.js
M src/ui/contextitems/ve.ui.LanguageContextItem.js
A src/ui/contextitems/ve.ui.LinearContextItem.js
M src/ui/contextitems/ve.ui.LinkContextItem.js
M src/ui/contextitems/ve.ui.MobileTableCellContextItem.js
M src/ui/contextitems/ve.ui.TableContextItem.js
M src/ui/contextitems/ve.ui.ToolContextItem.js
M src/ui/contexts/ve.ui.LinearContext.js
M src/ui/contexts/ve.ui.MobileContext.js
M src/ui/contexts/ve.ui.TableContext.js
M src/ui/styles/contextitems/ve.ui.AlignableContextItem.css
M src/ui/styles/contextitems/ve.ui.CommentContextItem.css
M src/ui/styles/contextitems/ve.ui.LanguageContextItem.css
A src/ui/styles/contextitems/ve.ui.LinearContextItem.css
M src/ui/styles/contextitems/ve.ui.LinkContextItem.css
M src/ui/styles/contextitems/ve.ui.TableContextItem.css
M src/ui/styles/contextitems/ve.ui.ToolContextItem.css
M src/ui/styles/ve.ui.ContextItem.css
M src/ui/styles/ve.ui.MobileContext.css
M src/ui/ve.ui.Context.js
M src/ui/ve.ui.ContextItem.js
M tests/index.html
30 files changed, 365 insertions(+), 307 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor 
refs/changes/58/232258/1

diff --git a/build/modules.json b/build/modules.json
index 84ac30b..c39629b 100644
--- a/build/modules.json
+++ b/build/modules.json
@@ -374,13 +374,14 @@
                        "src/ui/ve.ui.ModeledFactory.js",
                        "src/ui/ve.ui.ContextItem.js",
                        "src/ui/ve.ui.ContextItemFactory.js",
+                       "src/ui/contextitems/ve.ui.LinearContextItem.js",
+                       "src/ui/contextitems/ve.ui.TableContextItem.js",
                        "src/ui/contextitems/ve.ui.AlienContextItem.js",
                        "src/ui/contextitems/ve.ui.AlignableContextItem.js",
                        "src/ui/contextitems/ve.ui.CommentContextItem.js",
                        "src/ui/contextitems/ve.ui.LanguageContextItem.js",
                        "src/ui/contextitems/ve.ui.LinkContextItem.js",
                        "src/ui/contextitems/ve.ui.ToolContextItem.js",
-                       "src/ui/contextitems/ve.ui.TableContextItem.js",
                        "src/ui/ve.ui.Tool.js",
                        "src/ui/ve.ui.Toolbar.js",
                        "src/ui/ve.ui.TargetToolbar.js",
@@ -488,12 +489,13 @@
                        "src/ui/styles/inspectors/ve.ui.CommentInspector.css",
                        "src/ui/styles/inspectors/ve.ui.FragmentInspector.css",
                        "src/ui/styles/ve.ui.ContextItem.css",
+                       
"src/ui/styles/contextitems/ve.ui.LinearContextItem.css",
+                       "src/ui/styles/contextitems/ve.ui.TableContextItem.css",
                        
"src/ui/styles/contextitems/ve.ui.AlignableContextItem.css",
                        
"src/ui/styles/contextitems/ve.ui.CommentContextItem.css",
                        
"src/ui/styles/contextitems/ve.ui.LanguageContextItem.css",
                        "src/ui/styles/contextitems/ve.ui.LinkContextItem.css",
                        "src/ui/styles/contextitems/ve.ui.ToolContextItem.css",
-                       "src/ui/styles/contextitems/ve.ui.TableContextItem.css",
                        "src/ui/styles/ve.ui.Overlay.css",
                        "src/ui/styles/ve.ui.Surface.css",
                        "src/ui/styles/widgets/ve.ui.TargetWidget.css",
diff --git a/demos/ve/desktop.html b/demos/ve/desktop.html
index c6faf5e..2a53f78 100644
--- a/demos/ve/desktop.html
+++ b/demos/ve/desktop.html
@@ -56,12 +56,13 @@
                <link rel=stylesheet 
href="../../src/ui/styles/inspectors/ve.ui.CommentInspector.css" 
class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/inspectors/ve.ui.FragmentInspector.css" 
class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/ve.ui.ContextItem.css" class="stylesheet-ve">
+               <link rel=stylesheet 
href="../../src/ui/styles/contextitems/ve.ui.LinearContextItem.css" 
class="stylesheet-ve">
+               <link rel=stylesheet 
href="../../src/ui/styles/contextitems/ve.ui.TableContextItem.css" 
class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/contextitems/ve.ui.AlignableContextItem.css" 
class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/contextitems/ve.ui.CommentContextItem.css" 
class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/contextitems/ve.ui.LanguageContextItem.css" 
class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/contextitems/ve.ui.LinkContextItem.css" 
class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/contextitems/ve.ui.ToolContextItem.css" 
class="stylesheet-ve">
-               <link rel=stylesheet 
href="../../src/ui/styles/contextitems/ve.ui.TableContextItem.css" 
class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/ve.ui.Overlay.css" class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/ve.ui.Surface.css" class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/widgets/ve.ui.TargetWidget.css" class="stylesheet-ve">
@@ -335,13 +336,14 @@
                <script src="../../src/ui/ve.ui.ModeledFactory.js"></script>
                <script src="../../src/ui/ve.ui.ContextItem.js"></script>
                <script src="../../src/ui/ve.ui.ContextItemFactory.js"></script>
+               <script 
src="../../src/ui/contextitems/ve.ui.LinearContextItem.js"></script>
+               <script 
src="../../src/ui/contextitems/ve.ui.TableContextItem.js"></script>
                <script 
src="../../src/ui/contextitems/ve.ui.AlienContextItem.js"></script>
                <script 
src="../../src/ui/contextitems/ve.ui.AlignableContextItem.js"></script>
                <script 
src="../../src/ui/contextitems/ve.ui.CommentContextItem.js"></script>
                <script 
src="../../src/ui/contextitems/ve.ui.LanguageContextItem.js"></script>
                <script 
src="../../src/ui/contextitems/ve.ui.LinkContextItem.js"></script>
                <script 
src="../../src/ui/contextitems/ve.ui.ToolContextItem.js"></script>
-               <script 
src="../../src/ui/contextitems/ve.ui.TableContextItem.js"></script>
                <script src="../../src/ui/ve.ui.Tool.js"></script>
                <script src="../../src/ui/ve.ui.Toolbar.js"></script>
                <script src="../../src/ui/ve.ui.TargetToolbar.js"></script>
diff --git a/demos/ve/mobile.html b/demos/ve/mobile.html
index c4bc359..26202f9 100644
--- a/demos/ve/mobile.html
+++ b/demos/ve/mobile.html
@@ -56,12 +56,13 @@
                <link rel=stylesheet 
href="../../src/ui/styles/inspectors/ve.ui.CommentInspector.css" 
class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/inspectors/ve.ui.FragmentInspector.css" 
class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/ve.ui.ContextItem.css" class="stylesheet-ve">
+               <link rel=stylesheet 
href="../../src/ui/styles/contextitems/ve.ui.LinearContextItem.css" 
class="stylesheet-ve">
+               <link rel=stylesheet 
href="../../src/ui/styles/contextitems/ve.ui.TableContextItem.css" 
class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/contextitems/ve.ui.AlignableContextItem.css" 
class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/contextitems/ve.ui.CommentContextItem.css" 
class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/contextitems/ve.ui.LanguageContextItem.css" 
class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/contextitems/ve.ui.LinkContextItem.css" 
class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/contextitems/ve.ui.ToolContextItem.css" 
class="stylesheet-ve">
-               <link rel=stylesheet 
href="../../src/ui/styles/contextitems/ve.ui.TableContextItem.css" 
class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/ve.ui.Overlay.css" class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/ve.ui.Surface.css" class="stylesheet-ve">
                <link rel=stylesheet 
href="../../src/ui/styles/widgets/ve.ui.TargetWidget.css" class="stylesheet-ve">
@@ -337,13 +338,14 @@
                <script src="../../src/ui/ve.ui.ModeledFactory.js"></script>
                <script src="../../src/ui/ve.ui.ContextItem.js"></script>
                <script src="../../src/ui/ve.ui.ContextItemFactory.js"></script>
+               <script 
src="../../src/ui/contextitems/ve.ui.LinearContextItem.js"></script>
+               <script 
src="../../src/ui/contextitems/ve.ui.TableContextItem.js"></script>
                <script 
src="../../src/ui/contextitems/ve.ui.AlienContextItem.js"></script>
                <script 
src="../../src/ui/contextitems/ve.ui.AlignableContextItem.js"></script>
                <script 
src="../../src/ui/contextitems/ve.ui.CommentContextItem.js"></script>
                <script 
src="../../src/ui/contextitems/ve.ui.LanguageContextItem.js"></script>
                <script 
src="../../src/ui/contextitems/ve.ui.LinkContextItem.js"></script>
                <script 
src="../../src/ui/contextitems/ve.ui.ToolContextItem.js"></script>
-               <script 
src="../../src/ui/contextitems/ve.ui.TableContextItem.js"></script>
                <script src="../../src/ui/ve.ui.Tool.js"></script>
                <script src="../../src/ui/ve.ui.Toolbar.js"></script>
                <script src="../../src/ui/ve.ui.TargetToolbar.js"></script>
diff --git a/i18n/en.json b/i18n/en.json
index 8108c61..ee4a58f 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -42,6 +42,7 @@
        "visualeditor-commentinspector-tooltip": "Comment",
        "visualeditor-content-select-all": "Select all",
        "visualeditor-contextitemwidget-label-secondary": "Edit",
+       "visualeditor-contextitemwidget-label-remove": "Delete",
        "visualeditor-dialog-action-apply": "Apply changes",
        "visualeditor-dialog-action-cancel": "Cancel",
        "visualeditor-dialog-action-done": "Done",
diff --git a/i18n/qqq.json b/i18n/qqq.json
index 5118c61..5cd1e9a 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -48,7 +48,8 @@
        "visualeditor-commentinspector-title": "{{Identical|Comment}}",
        "visualeditor-commentinspector-tooltip": "Tooltip text for comment 
button.\n{{Related|Visualeditor-annotationbutton}}\n{{Identical|Comment}}",
        "visualeditor-content-select-all": "Label for select all 
command.\n{{Identical|Select all}}",
-       "visualeditor-contextitemwidget-label-secondary": "Text explaining the 
action that takes place after clicking on a context item.\n{{Identical|Edit}}",
+       "visualeditor-contextitemwidget-label-secondary": "Label for the edit 
action on a context item.\n{{Identical|Edit}}",
+       "visualeditor-contextitemwidget-label-remove": "Label for the remove 
action on a context item.",
        "visualeditor-dialog-action-apply": "Label text for button to apply 
changes made in dialog.\n\nSee also:\n* 
{{msg-mw|Visualeditor-dialog-action-cancel}}\n* 
{{msg-mw|Visualeditor-dialog-action-done}}\n* 
{{msg-mw|Visualeditor-dialog-action-goback}}\n* 
{{msg-mw|Visualeditor-dialog-action-insert}}\n{{Identical|Apply change}}",
        "visualeditor-dialog-action-cancel": "Label text for button to exit 
from dialog without making changes.\n\nSee also:\n* 
{{msg-mw|Visualeditor-dialog-action-apply}}\n* 
{{msg-mw|Visualeditor-dialog-action-done}}\n* 
{{msg-mw|Visualeditor-dialog-action-goback}}\n* 
{{msg-mw|Visualeditor-dialog-action-insert}}\n{{Identical|Cancel}}",
        "visualeditor-dialog-action-done": "Label text for button to finish 
using a dialog.\n\nSee also:\n* {{msg-mw|Visualeditor-dialog-action-apply}}\n* 
{{msg-mw|Visualeditor-dialog-action-cancel}}\n* 
{{msg-mw|Visualeditor-dialog-action-goback}}\n* 
{{msg-mw|Visualeditor-dialog-action-insert}}\n{{Identical|Done}}",
diff --git a/src/themes/mediawiki/widgets.css b/src/themes/mediawiki/widgets.css
index 1187620..9a37ac7 100644
--- a/src/themes/mediawiki/widgets.css
+++ b/src/themes/mediawiki/widgets.css
@@ -16,6 +16,6 @@
 
 /* Context item */
 
-.ve-ui-contextItem-body {
+.ve-ui-linearContextItem-body {
        min-height: 0.2em;
 }
diff --git a/src/ui/contextitems/ve.ui.AlienContextItem.js 
b/src/ui/contextitems/ve.ui.AlienContextItem.js
index 9f063e0..4dc746e 100644
--- a/src/ui/contextitems/ve.ui.AlienContextItem.js
+++ b/src/ui/contextitems/ve.ui.AlienContextItem.js
@@ -24,7 +24,7 @@
 
 /* Inheritance */
 
-OO.inheritClass( ve.ui.AlienContextItem, ve.ui.ContextItem );
+OO.inheritClass( ve.ui.AlienContextItem, ve.ui.LinearContextItem );
 
 /* Static Properties */
 
diff --git a/src/ui/contextitems/ve.ui.AlignableContextItem.js 
b/src/ui/contextitems/ve.ui.AlignableContextItem.js
index 1db4276..55bcf81 100644
--- a/src/ui/contextitems/ve.ui.AlignableContextItem.js
+++ b/src/ui/contextitems/ve.ui.AlignableContextItem.js
@@ -32,7 +32,7 @@
 
 /* Inheritance */
 
-OO.inheritClass( ve.ui.AlignableContextItem, ve.ui.ContextItem );
+OO.inheritClass( ve.ui.AlignableContextItem, ve.ui.LinearContextItem );
 
 /* Static Properties */
 
diff --git a/src/ui/contextitems/ve.ui.CommentContextItem.js 
b/src/ui/contextitems/ve.ui.CommentContextItem.js
index 51f9fbe..1958fcb 100644
--- a/src/ui/contextitems/ve.ui.CommentContextItem.js
+++ b/src/ui/contextitems/ve.ui.CommentContextItem.js
@@ -24,7 +24,7 @@
 
 /* Inheritance */
 
-OO.inheritClass( ve.ui.CommentContextItem, ve.ui.ContextItem );
+OO.inheritClass( ve.ui.CommentContextItem, ve.ui.LinearContextItem );
 
 /* Static Properties */
 
diff --git a/src/ui/contextitems/ve.ui.LanguageContextItem.js 
b/src/ui/contextitems/ve.ui.LanguageContextItem.js
index 865f4b3..0fab472 100644
--- a/src/ui/contextitems/ve.ui.LanguageContextItem.js
+++ b/src/ui/contextitems/ve.ui.LanguageContextItem.js
@@ -24,7 +24,7 @@
 
 /* Inheritance */
 
-OO.inheritClass( ve.ui.LanguageContextItem, ve.ui.ContextItem );
+OO.inheritClass( ve.ui.LanguageContextItem, ve.ui.LinearContextItem );
 
 /* Static Properties */
 
diff --git a/src/ui/contextitems/ve.ui.LinearContextItem.js 
b/src/ui/contextitems/ve.ui.LinearContextItem.js
new file mode 100644
index 0000000..ece138f
--- /dev/null
+++ b/src/ui/contextitems/ve.ui.LinearContextItem.js
@@ -0,0 +1,205 @@
+/*!
+ * VisualEditor UserInterface LinearContextItem class.
+ *
+ * @copyright 2011-2015 VisualEditor Team and others; see 
http://ve.mit-license.org
+ */
+
+/**
+ * Item in a context.
+ *
+ * @class
+ * @extends OO.ui.Widget
+ * @mixins OO.ui.mixin.IconElement
+ * @mixins OO.ui.mixin.LabelElement
+ * @mixins OO.ui.mixin.PendingElement
+ *
+ * @constructor
+ * @param {ve.ui.Context} context Context item is in
+ * @param {ve.dm.Model} [model] Model item is related to
+ * @param {Object} [config] Configuration options
+ * @cfg {boolean} [basic] Render only basic information
+ */
+ve.ui.LinearContextItem = function () {
+       // Parent constructor
+       ve.ui.LinearContextItem.super.apply( this, arguments );
+
+       // Properties
+       this.$head = $( '<div>' );
+       this.$title = $( '<div>' );
+       this.$actions = $( '<div>' );
+       this.$body = $( '<div>' );
+       this.$info = $( '<div>' );
+       this.$description = $( '<div>' );
+       if ( !this.context.isMobile() ) {
+               this.editButton = new OO.ui.ButtonWidget( {
+                       label: ve.msg( 
'visualeditor-contextitemwidget-label-secondary' ),
+                       flags: [ 'progressive' ]
+               } );
+               this.deleteButton = new OO.ui.ButtonWidget( {
+                       label: ve.msg( 
'visualeditor-contextitemwidget-label-remove' ),
+                       flags: [ 'destructive' ]
+               } );
+       } else {
+               this.editButton = new OO.ui.ButtonWidget( {
+                       framed: false,
+                       icon: 'edit',
+                       flags: [ 'progressive' ]
+               } );
+               this.deleteButton = new OO.ui.ButtonWidget( {
+                       framed: false,
+                       icon: 'remove',
+                       flags: [ 'destructive' ]
+               } );
+       }
+       this.actionButtons = new OO.ui.ButtonGroupWidget();
+       if ( this.isDeletable() ) {
+               this.actionButtons.addItems( [ this.deleteButton ] );
+       }
+       if ( this.isEditable() ) {
+               this.actionButtons.addItems( [ this.editButton ] );
+       }
+
+       // Events
+       this.editButton.connect( this, { click: 'onEditButtonClick' } );
+       this.deleteButton.connect( this, { click: 'onDeleteButtonClick' } );
+
+       // Initialization
+       this.$label.addClass( 've-ui-linearContextItem-label' );
+       this.$icon.addClass( 've-ui-linearContextItem-icon' );
+       this.$description.addClass( 've-ui-linearContextItem-description' );
+       this.$info
+               .addClass( 've-ui-linearContextItem-info' )
+               .append( this.$description );
+       this.$title
+               .addClass( 've-ui-linearContextItem-title' )
+               .append( this.$icon, this.$label );
+       this.$actions
+               .addClass( 've-ui-linearContextItem-actions' )
+               .append( this.actionButtons.$element );
+       this.$head
+               .addClass( 've-ui-linearContextItem-head' )
+               .append( this.$title, this.$info, this.$actions );
+       this.$body.addClass( 've-ui-linearContextItem-body' );
+       this.$element
+               .addClass( 've-ui-linearContextItem' )
+               .append( this.$head, this.$body );
+};
+
+/* Inheritance */
+
+OO.inheritClass( ve.ui.LinearContextItem, ve.ui.ContextItem );
+
+/* Events */
+
+/**
+ * @event command
+ */
+
+/* Static Properties */
+
+ve.ui.LinearContextItem.static.editable = true;
+
+ve.ui.LinearContextItem.static.deletable = true;
+
+/**
+ * Whether the context item should try (if space permits) to go inside the 
node,
+ * rather than below with an arrow
+ *
+ * @static
+ * @property {boolean}
+ * @inheritable
+ */
+ve.ui.LinearContextItem.static.embeddable = true;
+
+/* Methods */
+
+/**
+ * Handle edit button click events.
+ *
+ * @localdoc Executes the command related to #static-commandName on the 
context's surface
+ *
+ * @protected
+ */
+ve.ui.LinearContextItem.prototype.onEditButtonClick = function () {
+       var command = this.getCommand();
+
+       if ( command ) {
+               command.execute( this.context.getSurface() );
+               this.emit( 'command' );
+       }
+};
+
+/**
+ * Handle delete button click events.
+ */
+ve.ui.LinearContextItem.prototype.onDeleteButtonClick = function () {
+       this.getFragment().removeContent();
+};
+
+/**
+ * Check if item is editable.
+ *
+ * @return {boolean} Item is editable
+ */
+ve.ui.LinearContextItem.prototype.isEditable = function () {
+       return this.constructor.static.editable && ( !this.model || 
this.model.isEditable() );
+};
+
+/**
+ * Check if item is deletable.
+ *
+ * @return {boolean} Item is deletable
+ */
+ve.ui.LinearContextItem.prototype.isDeletable = function () {
+       return this.constructor.static.deletable && this.isNode() && 
this.context.showDeleteButton();
+};
+
+/**
+ * Get the description.
+ *
+ * @localdoc Override for custom description content
+ * @return {string} Item description
+ */
+ve.ui.LinearContextItem.prototype.getDescription = function () {
+       return '';
+};
+
+/**
+ * Render the body.
+ *
+ * @localdoc Renders the result of #getDescription, override for custom body 
rendering
+ */
+ve.ui.LinearContextItem.prototype.renderBody = function () {
+       this.$body.text( this.getDescription() );
+};
+
+/**
+ * Render the description.
+ *
+ * @localdoc Renders the result of #getDescription, override for custom 
description rendering
+ */
+ve.ui.LinearContextItem.prototype.renderDescription = function () {
+       this.$description.text( this.getDescription() );
+};
+
+/**
+ * @inheritdoc
+ */
+ve.ui.LinearContextItem.prototype.setup = function () {
+       if ( this.context.isMobile() ) {
+               this.renderDescription();
+       } else {
+               this.renderBody();
+       }
+
+       return this;
+};
+
+/**
+ * @inheritdoc
+ */
+ve.ui.LinearContextItem.prototype.teardown = function () {
+       this.$description.empty();
+       this.$body.empty();
+       return this;
+};
diff --git a/src/ui/contextitems/ve.ui.LinkContextItem.js 
b/src/ui/contextitems/ve.ui.LinkContextItem.js
index deac7ef..7b2411d 100644
--- a/src/ui/contextitems/ve.ui.LinkContextItem.js
+++ b/src/ui/contextitems/ve.ui.LinkContextItem.js
@@ -24,7 +24,7 @@
 
 /* Inheritance */
 
-OO.inheritClass( ve.ui.LinkContextItem, ve.ui.ContextItem );
+OO.inheritClass( ve.ui.LinkContextItem, ve.ui.LinearContextItem );
 
 /* Static Properties */
 
diff --git a/src/ui/contextitems/ve.ui.MobileTableCellContextItem.js 
b/src/ui/contextitems/ve.ui.MobileTableCellContextItem.js
index d373a28..6d4e349 100644
--- a/src/ui/contextitems/ve.ui.MobileTableCellContextItem.js
+++ b/src/ui/contextitems/ve.ui.MobileTableCellContextItem.js
@@ -24,7 +24,7 @@
 
 /* Inheritance */
 
-OO.inheritClass( ve.ui.MobileTableCellContextItem, ve.ui.ContextItem );
+OO.inheritClass( ve.ui.MobileTableCellContextItem, ve.ui.LinearContextItem );
 
 /* Static Properties */
 
diff --git a/src/ui/contextitems/ve.ui.TableContextItem.js 
b/src/ui/contextitems/ve.ui.TableContextItem.js
index d9206d4..ff9d9d8 100644
--- a/src/ui/contextitems/ve.ui.TableContextItem.js
+++ b/src/ui/contextitems/ve.ui.TableContextItem.js
@@ -20,11 +20,17 @@
        // Parent constructor
        ve.ui.TableContextItem.super.apply( this, arguments );
 
+       this.actionButton = new OO.ui.ButtonWidget( {
+               framed: false,
+               classes: [ 've-ui-tableContextItem-actionButton' ]
+       } );
+
+       this.actionButton.connect( this, { click: 'onActionButtonClick' } );
+
        // Initialization
-       this.$title.remove();
-       this.$info.remove();
-       this.editButton.toggleFramed( false ).clearFlags();
-       this.$element.addClass( 've-ui-tableContextItem' );
+       this.$element
+               .addClass( 've-ui-tableContextItem' )
+               .append( this.actionButton.$element );
 };
 
 /* Inheritance */
@@ -47,6 +53,22 @@
 /* Methods */
 
 /**
+ * Handle action button click events.
+ *
+ * @localdoc Executes the command related to #static-commandName on the 
context's surface
+ *
+ * @protected
+ */
+ve.ui.TableContextItem.prototype.onActionButtonClick = function () {
+       var command = this.getCommand();
+
+       if ( command ) {
+               command.execute( this.context.getSurface() );
+               this.emit( 'command' );
+       }
+};
+
+/**
  * Get the title of the tool, used by the button label
  *
  * @return {jQuery|string|OO.ui.HtmlSnippet|Function} Tool title
@@ -62,7 +84,7 @@
        // Parent method
        ve.ui.TableContextItem.super.prototype.setup.call( this );
 
-       this.editButton
+       this.actionButton
                .setIcon( this.constructor.static.icon )
                .setLabel( this.getTitle() );
 };
diff --git a/src/ui/contextitems/ve.ui.ToolContextItem.js 
b/src/ui/contextitems/ve.ui.ToolContextItem.js
index 866fb84..f60022d 100644
--- a/src/ui/contextitems/ve.ui.ToolContextItem.js
+++ b/src/ui/contextitems/ve.ui.ToolContextItem.js
@@ -30,7 +30,7 @@
 
 /* Inheritance */
 
-OO.inheritClass( ve.ui.ToolContextItem, ve.ui.ContextItem );
+OO.inheritClass( ve.ui.ToolContextItem, ve.ui.LinearContextItem );
 
 /* Methods */
 
diff --git a/src/ui/contexts/ve.ui.LinearContext.js 
b/src/ui/contexts/ve.ui.LinearContext.js
index 60f074d..8388795 100644
--- a/src/ui/contexts/ve.ui.LinearContext.js
+++ b/src/ui/contexts/ve.ui.LinearContext.js
@@ -39,21 +39,26 @@
 
 OO.inheritClass( ve.ui.LinearContext, ve.ui.Context );
 
-/* Static Property */
+/* Static Properties */
 
 /**
- * Instruct items to provide only a basic rendering.
+ * Context items should show a delete button
  *
  * @static
  * @inheritable
- * @property {boolean}
+ * @property {Object}
  */
-ve.ui.LinearContext.static.basicRendering = false;
+ve.ui.LinearContext.static.showDeleteButton = false;
 
 /* Methods */
 
-ve.ui.LinearContext.prototype.shouldUseBasicRendering = function () {
-       return this.constructor.static.basicRendering;
+/**
+ * Check if context items should show a delete button
+ *
+ * @return {boolean} Context items should show a delete button
+ */
+ve.ui.LinearContext.prototype.showDeleteButton = function () {
+       return this.constructor.static.showDeleteButton;
 };
 
 /**
diff --git a/src/ui/contexts/ve.ui.MobileContext.js 
b/src/ui/contexts/ve.ui.MobileContext.js
index 4bb0253..46c5cd6 100644
--- a/src/ui/contexts/ve.ui.MobileContext.js
+++ b/src/ui/contexts/ve.ui.MobileContext.js
@@ -39,11 +39,9 @@
 
 /* Static Properties */
 
-ve.ui.MobileContext.static.basicRendering = true;
+ve.ui.MobileContext.static.isMobile = true;
 
 ve.ui.MobileContext.static.showDeleteButton = true;
-
-ve.ui.MobileContext.static.defaultButtonConfig = { framed: false };
 
 /* Methods */
 
diff --git a/src/ui/contexts/ve.ui.TableContext.js 
b/src/ui/contexts/ve.ui.TableContext.js
index 6ecf6d9..66874ce 100644
--- a/src/ui/contexts/ve.ui.TableContext.js
+++ b/src/ui/contexts/ve.ui.TableContext.js
@@ -54,8 +54,6 @@
 
 /* Static Properties */
 
-ve.ui.TableContext.static.basicRendering = true;
-
 ve.ui.TableContext.static.groups = {
        col: [ 'insertColumnBefore', 'insertColumnAfter', 'deleteColumn' ],
        row: [ 'insertRowBefore', 'insertRowAfter', 'deleteRow' ]
diff --git a/src/ui/styles/contextitems/ve.ui.AlignableContextItem.css 
b/src/ui/styles/contextitems/ve.ui.AlignableContextItem.css
index 071c37f..03e58d4 100644
--- a/src/ui/styles/contextitems/ve.ui.AlignableContextItem.css
+++ b/src/ui/styles/contextitems/ve.ui.AlignableContextItem.css
@@ -4,15 +4,15 @@
  * @copyright 2011-2015 VisualEditor Team and others; see 
http://ve.mit-license.org
  */
 
-.ve-ui-alignableContextItem .ve-ui-contextItem-body {
+.ve-ui-alignableContextItem .ve-ui-linearContextItem-body {
        text-align: center;
 }
 
-.ve-ui-alignableContextItem .ve-ui-contextItem-info {
+.ve-ui-alignableContextItem .ve-ui-linearContextItem-info {
        vertical-align: middle;
 }
 
-.ve-ui-mobileContext .ve-ui-alignableContextItem 
.ve-ui-contextItem-description {
+.ve-ui-mobileContext .ve-ui-alignableContextItem 
.ve-ui-linearContextItem-description {
        line-height: 1em;
        padding-top: 0.3em;
 }
diff --git a/src/ui/styles/contextitems/ve.ui.CommentContextItem.css 
b/src/ui/styles/contextitems/ve.ui.CommentContextItem.css
index 39fa101..61cf14e 100644
--- a/src/ui/styles/contextitems/ve.ui.CommentContextItem.css
+++ b/src/ui/styles/contextitems/ve.ui.CommentContextItem.css
@@ -4,7 +4,7 @@
  * @copyright 2011-2015 VisualEditor Team and others; see 
http://ve.mit-license.org
  */
 
-.ve-ui-commentContextItem .ve-ui-contextItem-body {
+.ve-ui-commentContextItem .ve-ui-linearContextItem-body {
        padding: 0.5em 0.5em 0 0.5em;
        margin: 0 0.5em 1em 0.5em;
        overflow: auto;
diff --git a/src/ui/styles/contextitems/ve.ui.LanguageContextItem.css 
b/src/ui/styles/contextitems/ve.ui.LanguageContextItem.css
index 4ca3976..3674316 100644
--- a/src/ui/styles/contextitems/ve.ui.LanguageContextItem.css
+++ b/src/ui/styles/contextitems/ve.ui.LanguageContextItem.css
@@ -4,7 +4,7 @@
  * @copyright 2011-2015 VisualEditor Team and others; see 
http://ve.mit-license.org
  */
 
-.ve-ui-languageContextItem .ve-ui-contextItem-body {
+.ve-ui-languageContextItem .ve-ui-linearContextItem-body {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
diff --git a/src/ui/styles/contextitems/ve.ui.LinearContextItem.css 
b/src/ui/styles/contextitems/ve.ui.LinearContextItem.css
new file mode 100644
index 0000000..d432ebe
--- /dev/null
+++ b/src/ui/styles/contextitems/ve.ui.LinearContextItem.css
@@ -0,0 +1,70 @@
+/*!
+ * VisualEditor UserInterface LinearContextItem styles.
+ *
+ * @copyright 2011-2015 VisualEditor Team and others; see 
http://ve.mit-license.org
+ */
+
+.ve-ui-linearContextItem-head {
+       display: table;
+       width: 100%;
+}
+
+.ve-ui-linearContextItem-title {
+       display: table-cell;
+       width: 1%;
+       text-align: left;
+       padding: 0.5em 1em;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       white-space: nowrap;
+}
+
+.ve-ui-linearContextItem-icon {
+       display: inline-block;
+       vertical-align: middle;
+       width: 1.875em;
+       height: 1.875em;
+       background-position: center center;
+       background-repeat: no-repeat;
+}
+
+.ve-ui-linearContextItem-label {
+       min-width: 4em;
+       display: inline-block;
+       vertical-align: middle;
+       margin-left: 0.5em;
+}
+
+.ve-ui-linearContextItem-info {
+       display: table-cell;
+       position: relative;
+       width: 99%;
+}
+
+.ve-ui-linearContextItem-description {
+       position: absolute;
+       top: 0;
+       right: 0;
+       left: 0;
+       bottom: 0;
+       line-height: 3.6em;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       white-space: nowrap;
+       color: #888;
+}
+
+.ve-ui-linearContextItem-actions {
+       display: table-cell;
+       width: 1%;
+       padding: 0.5em;
+}
+
+.ve-ui-linearContextItem-body {
+       max-height: 15em;
+       overflow: auto;
+}
+
+.ve-ui-linearContextItem-body:not(:empty) {
+       padding: 0 1em 1em 1em;
+}
diff --git a/src/ui/styles/contextitems/ve.ui.LinkContextItem.css 
b/src/ui/styles/contextitems/ve.ui.LinkContextItem.css
index 264c585..057e3c8 100644
--- a/src/ui/styles/contextitems/ve.ui.LinkContextItem.css
+++ b/src/ui/styles/contextitems/ve.ui.LinkContextItem.css
@@ -4,7 +4,7 @@
  * @copyright 2011-2015 VisualEditor Team and others; see 
http://ve.mit-license.org
  */
 
-.ve-ui-linkContextItem .ve-ui-contextItem-body {
+.ve-ui-linkContextItem .ve-ui-linearContextItem-body {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
diff --git a/src/ui/styles/contextitems/ve.ui.TableContextItem.css 
b/src/ui/styles/contextitems/ve.ui.TableContextItem.css
index b08d85a..0d76789 100644
--- a/src/ui/styles/contextitems/ve.ui.TableContextItem.css
+++ b/src/ui/styles/contextitems/ve.ui.TableContextItem.css
@@ -4,17 +4,17 @@
  * @copyright 2011-2015 VisualEditor Team and others; see 
http://ve.mit-license.org
  */
 
-.ve-ui-tableContextItem .ve-ui-contextItem-actions {
+/*.ve-ui-tableContextItem-actions {
        text-align: left;
        width: auto;
        padding: 0;
 }
-
-.ve-ui-tableContextItem .ve-ui-contextItem-editButton {
+*/
+.ve-ui-tableContextItem-actionButton {
        display: block;
 }
 
-.ve-ui-tableContextItem .ve-ui-contextItem-editButton 
.oo-ui-buttonElement-button {
+.ve-ui-tableContextItem-actionButton .oo-ui-buttonElement-button {
        display: block;
        padding: 0.5em;
 }
diff --git a/src/ui/styles/contextitems/ve.ui.ToolContextItem.css 
b/src/ui/styles/contextitems/ve.ui.ToolContextItem.css
index 893310d..fbd601b 100644
--- a/src/ui/styles/contextitems/ve.ui.ToolContextItem.css
+++ b/src/ui/styles/contextitems/ve.ui.ToolContextItem.css
@@ -4,7 +4,7 @@
  * @copyright 2011-2015 VisualEditor Team and others; see 
http://ve.mit-license.org
  */
 
-.ve-ui-toolContextItem .ve-ui-contextItem-body {
+.ve-ui-toolContextItem .ve-ui-linearContextItem-body {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
diff --git a/src/ui/styles/ve.ui.ContextItem.css 
b/src/ui/styles/ve.ui.ContextItem.css
index b2a93c6..63b9ff9 100644
--- a/src/ui/styles/ve.ui.ContextItem.css
+++ b/src/ui/styles/ve.ui.ContextItem.css
@@ -14,76 +14,6 @@
        cursor: default;
 }
 
-.ve-ui-contextItem-head {
-       display: table;
-       width: 100%;
-}
-
-.ve-ui-contextItem-title {
-       display: table-cell;
-       width: 1%;
-       text-align: left;
-       padding: 0.5em 1em;
-       overflow: hidden;
-       text-overflow: ellipsis;
-       white-space: nowrap;
-}
-
-.ve-ui-contextItem-icon {
-       display: inline-block;
-       vertical-align: middle;
-       width: 1.875em;
-       height: 1.875em;
-       background-position: center center;
-       background-repeat: no-repeat;
-}
-
-.ve-ui-contextItem-label {
-       min-width: 4em;
-       display: inline-block;
-       vertical-align: middle;
-       margin-left: 0.5em;
-}
-
-.ve-ui-contextItem-info {
-       display: table-cell;
-       position: relative;
-       width: 99%;
-}
-
-.ve-ui-contextItem-description {
-       position: absolute;
-       top: 0;
-       right: 0;
-       left: 0;
-       bottom: 0;
-       line-height: 3.6em;
-       overflow: hidden;
-       text-overflow: ellipsis;
-       white-space: nowrap;
-       color: #888;
-}
-
-.ve-ui-contextItem-actions {
-       display: table-cell;
-       width: 1%;
-       text-align: right;
-       padding: 0.5em;
-}
-
-.ve-ui-contextItem-editButton {
-       display: inline-block;
-       vertical-align: middle;
-}
-
-.ve-ui-contextItem-body {
-       max-height: 15em;
-       overflow: auto;
-}
-
-.ve-ui-contextItem-body:not(:empty) {
-       padding: 0 1em 1em 1em;
-}
 
 .ve-ui-contextItem + .ve-ui-contextItem {
        border-top: 1px solid #eee;
diff --git a/src/ui/styles/ve.ui.MobileContext.css 
b/src/ui/styles/ve.ui.MobileContext.css
index b0d37fb..751a306 100644
--- a/src/ui/styles/ve.ui.MobileContext.css
+++ b/src/ui/styles/ve.ui.MobileContext.css
@@ -4,7 +4,7 @@
  * @copyright 2011-2015 VisualEditor Team and others; see 
http://ve.mit-license.org
  */
 
-.ve-ui-mobileContext .ve-ui-contextItem-body {
+.ve-ui-mobileContext .ve-ui-linearContextItem-body {
        display: none;
 }
 
@@ -12,27 +12,27 @@
        border-top: 1px solid #ddd;
 }
 
-.ve-ui-mobileContext .ve-ui-contextItem-label {
+.ve-ui-mobileContext .ve-ui-linearContextItem-label {
        min-width: auto;
 }
 
-.ve-ui-mobileContext .ve-ui-contextItem-title {
+.ve-ui-mobileContext .ve-ui-linearContextItem-title {
        padding: 0.7em 1em 0.7em 0.5em;
 }
 
-.ve-ui-mobileContext .ve-ui-contextItem-description {
+.ve-ui-mobileContext .ve-ui-linearContextItem-description {
        line-height: 3.164em;
 }
 
-.ve-ui-mobileContext .ve-ui-contextItem-actions {
+.ve-ui-mobileContext .ve-ui-linearContextItem-actions {
        line-height: 3.164em;
        padding: 0;
 }
 
-.ve-ui-mobileContext .ve-ui-contextItem-actions .oo-ui-buttonWidget {
+.ve-ui-mobileContext .ve-ui-linearContextItem-actions .oo-ui-buttonWidget {
        border-left: 1px solid #ddd;
 }
 
-.ve-ui-mobileContext .ve-ui-contextItem-actions .oo-ui-buttonElement-button {
+.ve-ui-mobileContext .ve-ui-linearContextItem-actions 
.oo-ui-buttonElement-button {
        padding: 0 0.5em
 }
diff --git a/src/ui/ve.ui.Context.js b/src/ui/ve.ui.Context.js
index 4480b51..37ea17f 100644
--- a/src/ui/ve.ui.Context.js
+++ b/src/ui/ve.ui.Context.js
@@ -53,62 +53,26 @@
  * @event resize
  */
 
-/* Static Property */
+/* Static Properties */
 
 /**
- * Instruct items to provide only a basic rendering.
+ * Context is for mobile devices.
  *
  * @static
  * @inheritable
  * @property {boolean}
  */
-ve.ui.Context.static.basicRendering = false;
-
-/**
- * Context items should show a delete button
- *
- * @static
- * @inheritable
- * @property {Object}
- */
-ve.ui.Context.static.showDeleteButton = false;
-
-/**
- * Default config options for rendering a button in a context item
- *
- * @static
- * @inheritable
- * @property {Object}
- */
-ve.ui.Context.static.defaultButtonConfig = {};
+ve.ui.Context.static.isMobile = false;
 
 /* Methods */
 
 /**
- * Check if items should provide only a basic rendering.
+ * Check if context is for mobile devices
  *
- * @return {boolean} Items should provide only a basic rendering
+ * @return {boolean} Context is for mobile devices
  */
-ve.ui.Context.prototype.shouldUseBasicRendering = function () {
-       return this.constructor.static.basicRendering;
-};
-
-/**
- * Check if context items should show a delete button
- *
- * @return {boolean} Context items should show a delete button
- */
-ve.ui.Context.prototype.showDeleteButton = function () {
-       return this.constructor.static.showDeleteButton;
-};
-
-/**
- * Get the default config options for rendering a button in a context item
- *
- * @return {Object} Config options
- */
-ve.ui.Context.prototype.getDefaultButtonConfig = function () {
-       return OO.copy( this.constructor.static.defaultButtonConfig );
+ve.ui.Context.prototype.isMobile = function () {
+       return this.constructor.static.isMobile;
 };
 
 /**
diff --git a/src/ui/ve.ui.ContextItem.js b/src/ui/ve.ui.ContextItem.js
index 7e8bacc..d6750e3 100644
--- a/src/ui/ve.ui.ContextItem.js
+++ b/src/ui/ve.ui.ContextItem.js
@@ -31,62 +31,13 @@
        // Properties
        this.context = context;
        this.model = model;
-       this.$head = $( '<div>' );
-       this.$title = $( '<div>' );
-       this.$actions = $( '<div>' );
-       this.$body = $( '<div>' );
-       this.$info = $( '<div>' );
-       this.$description = $( '<div>' );
-       this.editButton = new OO.ui.ButtonWidget( ve.extendObject(
-               this.context.getDefaultButtonConfig(),
-               {
-                       label: ve.msg( 
'visualeditor-contextitemwidget-label-secondary' ),
-                       flags: [ 'progressive' ],
-                       classes: [ 've-ui-contextItem-editButton' ]
-               }
-       ) );
-       this.deleteButton = new OO.ui.ButtonWidget( ve.extendObject(
-               this.context.getDefaultButtonConfig(),
-               {
-                       icon: 'remove',
-                       flags: [ 'destructive' ]
-               }
-       ) );
-       this.actionButtons = new OO.ui.ButtonGroupWidget();
-       if ( this.isDeletable() ) {
-               this.actionButtons.addItems( [ this.deleteButton ] );
-       }
-       if ( this.isEditable() ) {
-               this.actionButtons.addItems( [ this.editButton ] );
-       }
        this.fragment = null;
 
        // Events
-       this.editButton.connect( this, { click: 'onEditButtonClick' } );
-       this.deleteButton.connect( this, { click: 'onDeleteButtonClick' } );
        this.$element.on( 'mousedown', false );
 
        // Initialization
-       this.$label.addClass( 've-ui-contextItem-label' );
-       this.$icon.addClass( 've-ui-contextItem-icon' );
-       this.$description.addClass( 've-ui-contextItem-description' );
-       this.$info
-               .addClass( 've-ui-contextItem-info' )
-               .append( this.$description );
-       this.$title
-               .addClass( 've-ui-contextItem-title' )
-               .append( this.$icon, this.$label );
-       this.$actions
-               .addClass( 've-ui-contextItem-actions' )
-               .append( this.actionButtons.$element );
-       this.$head
-               .addClass( 've-ui-contextItem-head' )
-               .append( this.$title, this.$info, this.$actions );
-       this.$body.addClass( 've-ui-contextItem-body' );
-       this.$element
-               .addClass( 've-ui-contextItem' )
-               .toggleClass( 've-ui-contextItem-basic', 
this.context.shouldUseBasicRendering() )
-               .append( this.$head, this.$body );
+       this.$element.addClass( 've-ui-contextItem' );
 };
 
 /* Inheritance */
@@ -103,20 +54,6 @@
  */
 
 /* Static Properties */
-
-ve.ui.ContextItem.static.editable = true;
-
-ve.ui.ContextItem.static.deletable = true;
-
-/**
- * Whether the context item should try (if space permits) to go inside the 
node,
- * rather than below with an arrow
- *
- * @static
- * @property {boolean}
- * @inheritable
- */
-ve.ui.ContextItem.static.embeddable = true;
 
 /**
  * Whether this item exclusively handles any model class
@@ -143,29 +80,6 @@
 /* Methods */
 
 /**
- * Handle edit button click events.
- *
- * @localdoc Executes the command related to #static-commandName on the 
context's surface
- *
- * @protected
- */
-ve.ui.ContextItem.prototype.onEditButtonClick = function () {
-       var command = this.getCommand();
-
-       if ( command ) {
-               command.execute( this.context.getSurface() );
-               this.emit( 'command' );
-       }
-};
-
-/**
- * Handle delete button click events.
- */
-ve.ui.ContextItem.prototype.onDeleteButtonClick = function () {
-       this.getFragment().removeContent();
-};
-
-/**
  * Check if this item is compatible with a given model.
  *
  * @static
@@ -175,24 +89,6 @@
  */
 ve.ui.ContextItem.static.isCompatibleWith = function ( model ) {
        return ve.isInstanceOfAny( model, this.modelClasses );
-};
-
-/**
- * Check if item is editable.
- *
- * @return {boolean} Item is editable
- */
-ve.ui.ContextItem.prototype.isEditable = function () {
-       return this.constructor.static.editable && ( !this.model || 
this.model.isEditable() );
-};
-
-/**
- * Check if item is deletable.
- *
- * @return {boolean} Item is deletable
- */
-ve.ui.ContextItem.prototype.isDeletable = function () {
-       return this.constructor.static.deletable && this.isNode() && 
this.context.showDeleteButton();
 };
 
 /**
@@ -229,58 +125,19 @@
 };
 
 /**
- * Get the description.
- *
- * @localdoc Override for custom description content
- * @return {string} Item description
- */
-ve.ui.ContextItem.prototype.getDescription = function () {
-       return '';
-};
-
-/**
- * Render the body.
- *
- * @localdoc Renders the result of #getDescription, override for custom body 
rendering
- */
-ve.ui.ContextItem.prototype.renderBody = function () {
-       this.$body.text( this.getDescription() );
-};
-
-/**
- * Render the description.
- *
- * @localdoc Renders the result of #getDescription, override for custom 
description rendering
- */
-ve.ui.ContextItem.prototype.renderDescription = function () {
-       this.$description.text( this.getDescription() );
-};
-
-/**
  * Setup the item.
  *
- * @localdoc Calls #renderDescription if the context suggests basic rendering 
or #renderBody if not,
- *   override to start any async rendering common to the body and description
  * @chainable
  */
 ve.ui.ContextItem.prototype.setup = function () {
-       if ( this.context.shouldUseBasicRendering() ) {
-               this.renderDescription();
-       } else {
-               this.renderBody();
-       }
-
        return this;
 };
 
 /**
  * Teardown the item.
  *
- * @localdoc Empties the description and body, override to abort any async 
rendering
  * @chainable
  */
 ve.ui.ContextItem.prototype.teardown = function () {
-       this.$description.empty();
-       this.$body.empty();
        return this;
 };
diff --git a/tests/index.html b/tests/index.html
index c5f0a59..e64a3dd 100644
--- a/tests/index.html
+++ b/tests/index.html
@@ -265,13 +265,14 @@
                <script src="../src/ui/ve.ui.ModeledFactory.js"></script>
                <script src="../src/ui/ve.ui.ContextItem.js"></script>
                <script src="../src/ui/ve.ui.ContextItemFactory.js"></script>
+               <script 
src="../src/ui/contextitems/ve.ui.LinearContextItem.js"></script>
+               <script 
src="../src/ui/contextitems/ve.ui.TableContextItem.js"></script>
                <script 
src="../src/ui/contextitems/ve.ui.AlienContextItem.js"></script>
                <script 
src="../src/ui/contextitems/ve.ui.AlignableContextItem.js"></script>
                <script 
src="../src/ui/contextitems/ve.ui.CommentContextItem.js"></script>
                <script 
src="../src/ui/contextitems/ve.ui.LanguageContextItem.js"></script>
                <script 
src="../src/ui/contextitems/ve.ui.LinkContextItem.js"></script>
                <script 
src="../src/ui/contextitems/ve.ui.ToolContextItem.js"></script>
-               <script 
src="../src/ui/contextitems/ve.ui.TableContextItem.js"></script>
                <script src="../src/ui/ve.ui.Tool.js"></script>
                <script src="../src/ui/ve.ui.Toolbar.js"></script>
                <script src="../src/ui/ve.ui.TargetToolbar.js"></script>

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie157735ed96472f2a05ac85717bf25fccdf52171
Gerrit-PatchSet: 1
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to