Oliverb has uploaded a new change for review.

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

Change subject: Icons and tools for table manipulations.
......................................................................

Icons and tools for table manipulations.

Change-Id: Ic76f329fcb6cd5c8c7a8a1a8c16d1e9ebd74fe51
---
A src/ui/styles/images/icons/table-delete-column.svg
A src/ui/styles/images/icons/table-delete-row.svg
A src/ui/styles/images/icons/table-delete.svg
A src/ui/styles/images/icons/table-insert-column-after.svg
A src/ui/styles/images/icons/table-insert-column-before.svg
A src/ui/styles/images/icons/table-insert-row-after.svg
A src/ui/styles/images/icons/table-insert-row-before.svg
A src/ui/styles/images/icons/table.svg
M src/ui/styles/ve.ui.Icons.css
A src/ui/tools/ve.ui.TableTool.js
10 files changed, 1,427 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor 
refs/changes/13/159313/1

diff --git a/src/ui/styles/images/icons/table-delete-column.svg 
b/src/ui/styles/images/icons/table-delete-column.svg
new file mode 100644
index 0000000..b4cdb9a
--- /dev/null
+++ b/src/ui/styles/images/icons/table-delete-column.svg
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:sketch="http://www.bohemiancoding.com/sketch/ns";
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="28"
+   height="28.000465"
+   viewBox="0 0 28 28.000466"
+   version="1.1"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="table-delete-column.svg">
+  <metadata
+     id="metadata22">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title>Slice 2</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1600"
+     inkscape:window-height="838"
+     id="namedview20"
+     showgrid="false"
+     inkscape:zoom="10.727273"
+     inkscape:cx="-7.9318851"
+     inkscape:cy="17.123778"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <!-- Generator: Sketch Beta 3.0.4 (8053) - 
http://www.bohemiancoding.com/sketch -->
+  <title
+     id="title4">Slice 2</title>
+  <desc
+     id="desc6">Created with Sketch Beta.</desc>
+  <defs
+     id="defs8" />
+  <g
+     id="g3002"
+     transform="matrix(0,-0.99995839,0.99995839,0,2.8559283,25.174668)">
+    <rect
+       id="Rectangle-73"
+       sketch:type="MSShapeGroup"
+       x="0.50376481"
+       y="0.38512203"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4"
+       sketch:type="MSShapeGroup"
+       x="7.7241206"
+       y="0.35969862"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4-0"
+       sketch:type="MSShapeGroup"
+       x="14.902039"
+       y="0.34274933"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+  </g>
+  <g
+     id="g2997"
+     transform="matrix(0,-0.99995839,0.99995839,0,2.8559283,25.128071)">
+    <rect
+       id="Rectangle-73-9"
+       sketch:type="MSShapeGroup"
+       x="0.45716444"
+       y="7.58427"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4-4"
+       sketch:type="MSShapeGroup"
+       x="7.6775203"
+       y="7.558847"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4-0-8"
+       sketch:type="MSShapeGroup"
+       x="14.855438"
+       y="7.5418983"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+  </g>
+  <g
+     id="g2992"
+     transform="matrix(0,-1.0044082,0.99969507,0,2.8607545,25.065026)"
+     
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate">
+    <rect
+       id="Rectangle-73-8"
+       sketch:type="MSShapeGroup"
+       x="0.42491686"
+       y="14.841094"
+       width="7.0136991"
+       height="7.0136986"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4-2"
+       sketch:type="MSShapeGroup"
+       x="7.6452727"
+       y="14.815668"
+       width="7.0136991"
+       height="7.0136986"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4-0-4"
+       sketch:type="MSShapeGroup"
+       x="14.823189"
+       y="14.798718"
+       width="7.0136986"
+       height="7.0136991"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+  </g>
+  <path
+     
style="color:#000000;fill:none;stroke:#fd2f2f;stroke-width:0.88824272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     d="M 10.510869,3.4494682 17.140765,24.24827"
+     id="path3871"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="cc" />
+  <rect
+     
style="color:#000000;fill:none;stroke:#fd2f2f;stroke-width:0.90289879;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     id="rect3876"
+     width="21.612167"
+     height="7.2485089"
+     x="3.0893898"
+     y="-17.589916"
+     transform="matrix(0,1,-1,0,0,0)" />
+  <rect
+     
style="color:#000000;fill:none;stroke:none;stroke-width:0.10378359;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     id="rect3006"
+     width="28"
+     height="28.000465"
+     x="-1.8206485e-007"
+     y="-28.000465"
+     transform="scale(1,-1)" />
+</svg>
diff --git a/src/ui/styles/images/icons/table-delete-row.svg 
b/src/ui/styles/images/icons/table-delete-row.svg
new file mode 100644
index 0000000..6b6635f
--- /dev/null
+++ b/src/ui/styles/images/icons/table-delete-row.svg
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:sketch="http://www.bohemiancoding.com/sketch/ns";
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="28"
+   height="28.000465"
+   viewBox="0 0 28 28.000465"
+   version="1.1"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="table-delete-row.svg">
+  <metadata
+     id="metadata22">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title>Slice 2</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1600"
+     inkscape:window-height="838"
+     id="namedview20"
+     showgrid="false"
+     inkscape:zoom="12.055556"
+     inkscape:cx="7.9370188"
+     inkscape:cy="12.923772"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <!-- Generator: Sketch Beta 3.0.4 (8053) - 
http://www.bohemiancoding.com/sketch -->
+  <title
+     id="title4">Slice 2</title>
+  <desc
+     id="desc6">Created with Sketch Beta.</desc>
+  <defs
+     id="defs8" />
+  <g
+     id="g3002"
+     transform="matrix(0.99675669,0,0,0.99675669,2.811034,3.038306)">
+    <rect
+       id="Rectangle-73"
+       sketch:type="MSShapeGroup"
+       x="0.50376481"
+       y="0.38512203"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4"
+       sketch:type="MSShapeGroup"
+       x="7.7241206"
+       y="0.35969862"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4-0"
+       sketch:type="MSShapeGroup"
+       x="14.902039"
+       y="0.34274933"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+  </g>
+  <g
+     id="g2997"
+     transform="matrix(0.99675669,0,0,0.99675669,2.8574829,3.038306)">
+    <rect
+       id="Rectangle-73-9"
+       sketch:type="MSShapeGroup"
+       x="0.45716444"
+       y="7.58427"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4-4"
+       sketch:type="MSShapeGroup"
+       x="7.6775203"
+       y="7.558847"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4-0-8"
+       sketch:type="MSShapeGroup"
+       x="14.855438"
+       y="7.5418983"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+  </g>
+  <g
+     id="g2992"
+     transform="matrix(1.0011923,0,0,0.99649426,2.9203265,3.0431168)"
+     
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate">
+    <rect
+       id="Rectangle-73-8"
+       sketch:type="MSShapeGroup"
+       x="0.42491686"
+       y="14.841094"
+       width="7.0136991"
+       height="7.0136986"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4-2"
+       sketch:type="MSShapeGroup"
+       x="7.6452727"
+       y="14.815668"
+       width="7.0136991"
+       height="7.0136986"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4-0-4"
+       sketch:type="MSShapeGroup"
+       x="14.823189"
+       y="14.798718"
+       width="7.0136986"
+       height="7.0136991"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+  </g>
+  <path
+     
style="color:#000000;fill:none;stroke:#fd2f2f;stroke-width:0.90595114;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     d="M 3.2801546,17.495202 24.456402,10.721249"
+     id="path3871"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="cc" />
+  <rect
+     
style="color:#000000;fill:none;stroke:#fd2f2f;stroke-width:0.89709079;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     id="rect3876"
+     width="21.452972"
+     height="7.2086577"
+     x="3.2811677"
+     y="10.536408" />
+  <rect
+     
style="color:#000000;fill:none;stroke:none;stroke-width:0.10378359;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     id="rect3006"
+     width="28"
+     height="28.000465"
+     x="0"
+     y="-28.000465"
+     transform="scale(1,-1)" />
+</svg>
diff --git a/src/ui/styles/images/icons/table-delete.svg 
b/src/ui/styles/images/icons/table-delete.svg
new file mode 100644
index 0000000..2cc4e0f
--- /dev/null
+++ b/src/ui/styles/images/icons/table-delete.svg
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:sketch="http://www.bohemiancoding.com/sketch/ns";
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="28"
+   height="28.000465"
+   viewBox="0 0 28 28.000466"
+   version="1.1"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="table-delete.svg">
+  <metadata
+     id="metadata22">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title>Slice 2</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1600"
+     inkscape:window-height="838"
+     id="namedview20"
+     showgrid="false"
+     inkscape:zoom="10.727273"
+     inkscape:cx="-7.9318851"
+     inkscape:cy="18.522083"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <!-- Generator: Sketch Beta 3.0.4 (8053) - 
http://www.bohemiancoding.com/sketch -->
+  <title
+     id="title4">Slice 2</title>
+  <desc
+     id="desc6">Created with Sketch Beta.</desc>
+  <defs
+     id="defs8" />
+  <g
+     id="g3002"
+     transform="matrix(0,-0.99648491,0.99644199,0,2.8359968,25.342351)">
+    <rect
+       id="Rectangle-73"
+       sketch:type="MSShapeGroup"
+       x="0.50376481"
+       y="0.38512203"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4"
+       sketch:type="MSShapeGroup"
+       x="7.7241206"
+       y="0.35969862"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4-0"
+       sketch:type="MSShapeGroup"
+       x="14.902039"
+       y="0.34274933"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+  </g>
+  <g
+     id="g2997"
+     transform="matrix(0,-0.99648491,0.99644199,0,2.8359968,25.295915)">
+    <rect
+       id="Rectangle-73-9"
+       sketch:type="MSShapeGroup"
+       x="0.45716444"
+       y="7.58427"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4-4"
+       sketch:type="MSShapeGroup"
+       x="7.6775203"
+       y="7.558847"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4-0-8"
+       sketch:type="MSShapeGroup"
+       x="14.855438"
+       y="7.5418983"
+       width="7.1111112"
+       height="7.1111112"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+  </g>
+  <g
+     id="g2992"
+     transform="matrix(0,-1.0009192,0.99617954,0,2.8408061,25.233089)"
+     
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate">
+    <rect
+       id="Rectangle-73-8"
+       sketch:type="MSShapeGroup"
+       x="0.42491686"
+       y="14.841094"
+       width="7.0136991"
+       height="7.0136986"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4-2"
+       sketch:type="MSShapeGroup"
+       x="7.6452727"
+       y="14.815668"
+       width="7.0136991"
+       height="7.0136986"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <rect
+       id="Rectangle-73-4-0-4"
+       sketch:type="MSShapeGroup"
+       x="14.823189"
+       y="14.798718"
+       width="7.0136986"
+       height="7.0136991"
+       
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+  </g>
+  <path
+     
style="color:#000000;fill:none;stroke:#fd2f2f;stroke-width:1.56619024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     d="M 3.4391357,3.7669198 24.27294,24.344867"
+     id="path3871"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="cc" />
+  <rect
+     
style="color:#000000;fill:none;stroke:#fd2f2f;stroke-width:0.88947922;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     id="rect3876"
+     width="21.369873"
+     height="21.431629"
+     x="3.3286572"
+     y="-24.53371"
+     transform="matrix(0,1,-1,0,0,0)"
+     ry="0" />
+  <rect
+     
style="color:#000000;fill:none;stroke:none;stroke-width:0.10378359;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     id="rect3006"
+     width="28"
+     height="28.000465"
+     x="-1.6256097e-007"
+     y="-28.000465"
+     transform="scale(1,-1)" />
+</svg>
diff --git a/src/ui/styles/images/icons/table-insert-column-after.svg 
b/src/ui/styles/images/icons/table-insert-column-after.svg
new file mode 100644
index 0000000..6cf65c2
--- /dev/null
+++ b/src/ui/styles/images/icons/table-insert-column-after.svg
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:sketch="http://www.bohemiancoding.com/sketch/ns";
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="26.84375"
+   height="26.875"
+   viewBox="0 0 26.843751 26.875"
+   version="1.1"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="table-insert-column.svg">
+  <metadata
+     id="metadata22">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title>Slice 2</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1600"
+     inkscape:window-height="838"
+     id="namedview20"
+     showgrid="false"
+     inkscape:zoom="10.727273"
+     inkscape:cx="4.4305477"
+     inkscape:cy="8.2899506"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <!-- Generator: Sketch Beta 3.0.4 (8053) - 
http://www.bohemiancoding.com/sketch -->
+  <title
+     id="title4">Slice 2</title>
+  <desc
+     id="desc6">Created with Sketch Beta.</desc>
+  <defs
+     id="defs8" />
+  <g
+     id="g3809"
+     transform="matrix(0,-1,1,0,-3.2113343,30.18697)">
+    <g
+       id="g2994"
+       transform="matrix(1,0,0,1.0000161,3.5031803,3.5079469)">
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="0.38512203"
+         x="0.50376481"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="0.35969862"
+         x="7.7241206"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-4" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="0.34274933"
+         x="14.902039"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-4-0" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="7.58427"
+         x="0.50376475"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-9" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="7.558847"
+         x="7.7241206"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-4-4" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="7.5418983"
+         x="14.902039"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-4-0-8" />
+      <g
+         id="g2992"
+         transform="translate(4.11061,0)">
+        <rect
+           id="Rectangle-73-8"
+           sketch:type="MSShapeGroup"
+           x="0.42491686"
+           y="14.841094"
+           width="7.0136991"
+           height="7.0136986"
+           
style="color:#000000;fill:#b7e999;fill-opacity:1;fill-rule:evenodd;stroke:#5aaf27;stroke-width:0.98630136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+        <rect
+           id="Rectangle-73-4-2"
+           sketch:type="MSShapeGroup"
+           x="7.6452727"
+           y="14.815668"
+           width="7.0136991"
+           height="7.0136986"
+           
style="color:#000000;fill:#b7e999;fill-opacity:1;fill-rule:evenodd;stroke:#5aaf27;stroke-width:0.98630136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+        <rect
+           id="Rectangle-73-4-0-4"
+           sketch:type="MSShapeGroup"
+           x="14.823189"
+           y="14.798718"
+           width="7.0136986"
+           height="7.0136991"
+           
style="color:#000000;fill:#b7e999;fill-opacity:1;fill-rule:evenodd;stroke:#5aaf27;stroke-width:0.98630136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+      </g>
+    </g>
+  </g>
+  <rect
+     
style="color:#000000;fill:none;stroke:none;stroke-width:0.10378359000000000;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     id="rect3006"
+     width="26.749344"
+     height="26.749788"
+     x="0.049057391"
+     y="-26.812927"
+     transform="scale(1,-1)" />
+</svg>
diff --git a/src/ui/styles/images/icons/table-insert-column-before.svg 
b/src/ui/styles/images/icons/table-insert-column-before.svg
new file mode 100644
index 0000000..6d15279
--- /dev/null
+++ b/src/ui/styles/images/icons/table-insert-column-before.svg
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:sketch="http://www.bohemiancoding.com/sketch/ns";
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="26.84375"
+   height="26.875"
+   viewBox="0 0 26.843751 26.875"
+   version="1.1"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="table-insert-column-before.svg">
+  <metadata
+     id="metadata22">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title>Slice 2</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1600"
+     inkscape:window-height="838"
+     id="namedview20"
+     showgrid="false"
+     inkscape:zoom="10.727273"
+     inkscape:cx="4.4305477"
+     inkscape:cy="8.2899506"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <!-- Generator: Sketch Beta 3.0.4 (8053) - 
http://www.bohemiancoding.com/sketch -->
+  <title
+     id="title4">Slice 2</title>
+  <desc
+     id="desc6">Created with Sketch Beta.</desc>
+  <defs
+     id="defs8" />
+  <g
+     id="g3809"
+     transform="matrix(0,-1,-1,0,26.051165,30.18697)">
+    <g
+       id="g2994"
+       transform="matrix(1,0,0,1.0000161,3.5031803,3.5079469)">
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="0.38512203"
+         x="0.50376481"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="0.35969862"
+         x="7.7241206"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-4" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="0.34274933"
+         x="14.902039"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-4-0" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="7.58427"
+         x="0.50376475"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-9" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="7.558847"
+         x="7.7241206"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-4-4" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="7.5418983"
+         x="14.902039"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-4-0-8" />
+      <g
+         id="g2992"
+         transform="translate(4.11061,0)">
+        <rect
+           id="Rectangle-73-8"
+           sketch:type="MSShapeGroup"
+           x="0.42491686"
+           y="14.841094"
+           width="7.0136991"
+           height="7.0136986"
+           
style="color:#000000;fill:#b7e999;fill-opacity:1;fill-rule:evenodd;stroke:#5aaf27;stroke-width:0.98630136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+        <rect
+           id="Rectangle-73-4-2"
+           sketch:type="MSShapeGroup"
+           x="7.6452727"
+           y="14.815668"
+           width="7.0136991"
+           height="7.0136986"
+           
style="color:#000000;fill:#b7e999;fill-opacity:1;fill-rule:evenodd;stroke:#5aaf27;stroke-width:0.98630136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+        <rect
+           id="Rectangle-73-4-0-4"
+           sketch:type="MSShapeGroup"
+           x="14.823189"
+           y="14.798718"
+           width="7.0136986"
+           height="7.0136991"
+           
style="color:#000000;fill:#b7e999;fill-opacity:1;fill-rule:evenodd;stroke:#5aaf27;stroke-width:0.98630136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+      </g>
+    </g>
+  </g>
+  <rect
+     
style="color:#000000;fill:none;stroke:none;stroke-width:0.10378359000000000;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     id="rect3006"
+     width="26.749344"
+     height="26.749788"
+     x="0.049057391"
+     y="-26.812927"
+     transform="scale(1,-1)" />
+</svg>
diff --git a/src/ui/styles/images/icons/table-insert-row-after.svg 
b/src/ui/styles/images/icons/table-insert-row-after.svg
new file mode 100644
index 0000000..8bacb2d
--- /dev/null
+++ b/src/ui/styles/images/icons/table-insert-row-after.svg
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:sketch="http://www.bohemiancoding.com/sketch/ns";
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="26.749344"
+   height="26.749788"
+   viewBox="0 0 26.749344 26.749788"
+   version="1.1"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="table-insert-row.svg">
+  <metadata
+     id="metadata22">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title>Slice 2</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1600"
+     inkscape:window-height="838"
+     id="namedview20"
+     showgrid="false"
+     inkscape:zoom="10.727273"
+     inkscape:cx="-23.720142"
+     inkscape:cy="8.1296155"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <!-- Generator: Sketch Beta 3.0.4 (8053) - 
http://www.bohemiancoding.com/sketch -->
+  <title
+     id="title4">Slice 2</title>
+  <desc
+     id="desc6">Created with Sketch Beta.</desc>
+  <defs
+     id="defs8" />
+  <g
+     id="g3768"
+     transform="translate(0.19670678,-3.794596)">
+    <g
+       id="g3798"
+       transform="translate(0,0.37288136)">
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="8.037179"
+         x="0.44444451"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="8.011755"
+         x="7.6648002"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-4" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="7.9948063"
+         x="14.842718"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-4-0" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="15.236326"
+         x="0.44444445"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-9" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="15.210903"
+         x="7.6648002"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-4-4" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="15.193954"
+         x="14.842718"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-4-0-8" />
+      <g
+         id="g2992"
+         transform="translate(4.0512897,7.6520568)">
+        <rect
+           id="Rectangle-73-8"
+           sketch:type="MSShapeGroup"
+           x="0.42491686"
+           y="14.841094"
+           width="7.0136991"
+           height="7.0136986"
+           
style="color:#000000;fill:#b7e999;fill-opacity:1;fill-rule:evenodd;stroke:#5aaf27;stroke-width:0.98630136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+        <rect
+           id="Rectangle-73-4-2"
+           sketch:type="MSShapeGroup"
+           x="7.6452727"
+           y="14.815668"
+           width="7.0136991"
+           height="7.0136986"
+           
style="color:#000000;fill:#b7e999;fill-opacity:1;fill-rule:evenodd;stroke:#5aaf27;stroke-width:0.98630136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+        <rect
+           id="Rectangle-73-4-0-4"
+           sketch:type="MSShapeGroup"
+           x="14.823189"
+           y="14.798718"
+           width="7.0136986"
+           height="7.0136991"
+           
style="color:#000000;fill:#b7e999;fill-opacity:1;fill-rule:evenodd;stroke:#5aaf27;stroke-width:0.98630136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+      </g>
+    </g>
+  </g>
+  <rect
+     
style="color:#000000;fill:none;stroke:none;stroke-width:0.10378359;marker:none;visibility:visible;overflow:visible;enable-background:accumulate"
+     id="rect3006"
+     width="26.749344"
+     height="26.749788"
+     x="0"
+     y="-26.749788"
+     transform="scale(1,-1)"
+     sodipodi:insensitive="true" />
+</svg>
diff --git a/src/ui/styles/images/icons/table-insert-row-before.svg 
b/src/ui/styles/images/icons/table-insert-row-before.svg
new file mode 100644
index 0000000..b91303d
--- /dev/null
+++ b/src/ui/styles/images/icons/table-insert-row-before.svg
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:sketch="http://www.bohemiancoding.com/sketch/ns";
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="26.749344"
+   height="26.749788"
+   viewBox="0 0 26.749344 26.749788"
+   version="1.1"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="table-insert-row-before.svg">
+  <metadata
+     id="metadata22">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title>Slice 2</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1600"
+     inkscape:window-height="838"
+     id="namedview20"
+     showgrid="false"
+     inkscape:zoom="10.727273"
+     inkscape:cx="-23.720142"
+     inkscape:cy="8.1296155"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <!-- Generator: Sketch Beta 3.0.4 (8053) - 
http://www.bohemiancoding.com/sketch -->
+  <title
+     id="title4">Slice 2</title>
+  <desc
+     id="desc6">Created with Sketch Beta.</desc>
+  <defs
+     id="defs8" />
+  <g
+     id="g3768"
+     transform="matrix(1,0,0,-1,0.19670678,34.501529)">
+    <g
+       id="g3798"
+       transform="translate(0,0.37288136)">
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="8.037179"
+         x="0.44444451"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="8.011755"
+         x="7.6648002"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-4" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="7.9948063"
+         x="14.842718"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-4-0" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="15.236326"
+         x="0.44444445"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-9" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="15.210903"
+         x="7.6648002"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-4-4" />
+      <rect
+         
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         height="7.1111112"
+         width="7.1111112"
+         y="15.193954"
+         x="14.842718"
+         sketch:type="MSShapeGroup"
+         id="Rectangle-73-4-0-8" />
+      <g
+         id="g2992"
+         transform="translate(4.0512897,7.6520568)">
+        <rect
+           id="Rectangle-73-8"
+           sketch:type="MSShapeGroup"
+           x="0.42491686"
+           y="14.841094"
+           width="7.0136991"
+           height="7.0136986"
+           
style="color:#000000;fill:#b7e999;fill-opacity:1;fill-rule:evenodd;stroke:#5aaf27;stroke-width:0.98630136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+        <rect
+           id="Rectangle-73-4-2"
+           sketch:type="MSShapeGroup"
+           x="7.6452727"
+           y="14.815668"
+           width="7.0136991"
+           height="7.0136986"
+           
style="color:#000000;fill:#b7e999;fill-opacity:1;fill-rule:evenodd;stroke:#5aaf27;stroke-width:0.98630136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+        <rect
+           id="Rectangle-73-4-0-4"
+           sketch:type="MSShapeGroup"
+           x="14.823189"
+           y="14.798718"
+           width="7.0136986"
+           height="7.0136991"
+           
style="color:#000000;fill:#b7e999;fill-opacity:1;fill-rule:evenodd;stroke:#5aaf27;stroke-width:0.98630136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+      </g>
+    </g>
+  </g>
+  <rect
+     
style="color:#000000;fill:none;stroke:none;stroke-width:0.10378359;marker:none;visibility:visible;overflow:visible;enable-background:accumulate"
+     id="rect3006"
+     width="26.749344"
+     height="26.749788"
+     x="0"
+     y="-26.749788"
+     transform="scale(1,-1)"
+     sodipodi:insensitive="true" />
+</svg>
diff --git a/src/ui/styles/images/icons/table.svg 
b/src/ui/styles/images/icons/table.svg
new file mode 100644
index 0000000..22ac119
--- /dev/null
+++ b/src/ui/styles/images/icons/table.svg
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:sketch="http://www.bohemiancoding.com/sketch/ns";
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="22.423672"
+   height="22.338526"
+   viewBox="0 0 22.423672 22.338526"
+   version="1.1"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="table.svg">
+  <metadata
+     id="metadata22">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title>Slice 2</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1600"
+     inkscape:window-height="838"
+     id="namedview20"
+     showgrid="false"
+     inkscape:zoom="10.727273"
+     inkscape:cx="-16.06783"
+     inkscape:cy="11.292388"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <!-- Generator: Sketch Beta 3.0.4 (8053) - 
http://www.bohemiancoding.com/sketch -->
+  <title
+     id="title4">Slice 2</title>
+  <desc
+     id="desc6">Created with Sketch Beta.</desc>
+  <defs
+     id="defs8" />
+  <rect
+     
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     height="7.1111112"
+     width="7.1111112"
+     y="7.6304092"
+     x="0.4698427"
+     sketch:type="MSShapeGroup"
+     id="Rectangle-73-9" />
+  <rect
+     
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     height="7.1111112"
+     width="7.1111112"
+     y="7.6049862"
+     x="7.6901984"
+     sketch:type="MSShapeGroup"
+     id="Rectangle-73-4-4" />
+  <rect
+     
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     height="7.1111112"
+     width="7.1111112"
+     y="7.5880375"
+     x="14.868116"
+     sketch:type="MSShapeGroup"
+     id="Rectangle-73-4-0-8" />
+  <rect
+     
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     height="7.1111112"
+     width="7.1111112"
+     y="14.782971"
+     x="0.44444445"
+     sketch:type="MSShapeGroup"
+     id="Rectangle-73-8" />
+  <rect
+     
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     height="7.1111112"
+     width="7.1111112"
+     y="14.757545"
+     x="7.6648002"
+     sketch:type="MSShapeGroup"
+     id="Rectangle-73-4-2" />
+  <rect
+     
style="color:#000000;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#979797;stroke-width:0.8888889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     height="7.1111112"
+     width="7.1111112"
+     y="14.740597"
+     x="14.842716"
+     sketch:type="MSShapeGroup"
+     id="Rectangle-73-4-0-4" />
+  <rect
+     
style="color:#000000;fill:#4990e2;fill-opacity:1;fill-rule:evenodd;stroke:#3d76b8;stroke-width:0.98630136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     height="7.0136991"
+     width="7.0136986"
+     y="0.49315068"
+     x="0.50959373"
+     sketch:type="MSShapeGroup"
+     id="Rectangle-73" />
+  <rect
+     
style="color:#000000;fill:#4990e2;fill-opacity:1;fill-rule:evenodd;stroke:#3d76b8;stroke-width:0.98630136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     height="7.0136986"
+     width="7.0136991"
+     y="0.49315068"
+     x="7.7299495"
+     sketch:type="MSShapeGroup"
+     id="Rectangle-73-4" />
+  <rect
+     
style="color:#000000;fill:#4990e2;fill-opacity:1;fill-rule:evenodd;stroke:#3d76b8;stroke-width:0.98630136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     height="7.0136986"
+     width="7.0136991"
+     y="0.49315068"
+     x="14.907867"
+     sketch:type="MSShapeGroup"
+     id="Rectangle-73-4-0" />
+</svg>
diff --git a/src/ui/styles/ve.ui.Icons.css b/src/ui/styles/ve.ui.Icons.css
index 79cf3c6..7692083 100644
--- a/src/ui/styles/ve.ui.Icons.css
+++ b/src/ui/styles/ve.ui.Icons.css
@@ -271,3 +271,43 @@
        /* @embed */
        background-image: url(images/icons/underline-u.svg);
 }
+
+.oo-ui-icon-table {
+       background-image: /* @embed */ url(images/icons/table.svg);
+       background-position: center;
+}
+
+.oo-ui-icon-table-insert-row-before {
+       background-image: /* @embed */ 
url(images/icons/table-insert-row-before.svg);
+       background-position: center;
+}
+
+.oo-ui-icon-table-insert-row-after {
+       background-image: /* @embed */ 
url(images/icons/table-insert-row-after.svg);
+       background-position: center;
+}
+
+.oo-ui-icon-table-delete-row {
+       background-image: /* @embed */ url(images/icons/table-delete-row.svg);
+       background-position: center;
+}
+
+.oo-ui-icon-table-insert-column-before {
+       background-image: /* @embed */ 
url(images/icons/table-insert-column-before.svg);
+       background-position: center;
+}
+
+.oo-ui-icon-table-insert-column-after {
+       background-image: /* @embed */ 
url(images/icons/table-insert-column-after.svg);
+       background-position: center;
+}
+
+.oo-ui-icon-table-delete-column {
+       background-image: /* @embed */ 
url(images/icons/table-delete-column.svg);
+       background-position: center;
+}
+
+.oo-ui-icon-table-delete {
+       background-image: /* @embed */ url(images/icons/table-delete.svg);
+       background-position: center;
+}
diff --git a/src/ui/tools/ve.ui.TableTool.js b/src/ui/tools/ve.ui.TableTool.js
new file mode 100644
index 0000000..218e5b8
--- /dev/null
+++ b/src/ui/tools/ve.ui.TableTool.js
@@ -0,0 +1,134 @@
+/*!
+ * VisualEditor UserInterface ListTool classes.
+ *
+ * @copyright 2011-2014 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/* Tools */
+
+ve.ui.InsertTable = function VeUiInsertTable( toolGroup, config ) {
+       ve.ui.Tool.call( this, toolGroup, config );
+};
+OO.inheritClass( ve.ui.InsertTable, ve.ui.Tool );
+ve.ui.InsertTable.static.name = 'insertTable';
+ve.ui.InsertTable.static.group = 'insert';
+ve.ui.InsertTable.static.icon = 'table';
+ve.ui.InsertTable.static.title = 'Table';
+ve.ui.InsertTable.static.commandName = 'insertTable';
+ve.ui.toolFactory.register( ve.ui.InsertTable );
+
+ve.ui.DeleteTable = function VeUiDeleteTable( toolGroup, config ) {
+       ve.ui.Tool.call( this, toolGroup, config );
+};
+OO.inheritClass( ve.ui.DeleteTable, ve.ui.Tool );
+ve.ui.DeleteTable.static.name = 'deleteTable';
+ve.ui.DeleteTable.static.group = 'table';
+ve.ui.DeleteTable.static.autoAddToCatchall = false;
+ve.ui.DeleteTable.static.icon = 'remove';
+ve.ui.DeleteTable.static.title = OO.ui.deferMsg( 
'visualeditor-inspector-remove-tooltip' );
+ve.ui.DeleteTable.static.commandName = 'deleteTable';
+ve.ui.toolFactory.register( ve.ui.DeleteTable );
+
+ve.ui.InsertRowBefore = function VeUiInsertRowBefore( toolGroup, config ) {
+       ve.ui.Tool.call( this, toolGroup, config );
+};
+OO.inheritClass( ve.ui.InsertRowBefore, ve.ui.Tool );
+ve.ui.InsertRowBefore.static.name = 'insertRowBefore';
+ve.ui.InsertRowBefore.static.group = 'table';
+ve.ui.InsertRowBefore.static.autoAddToCatchall = false;
+ve.ui.InsertRowBefore.static.icon = 'table-insert-row-before';
+ve.ui.InsertRowBefore.static.title = 'Above';
+ve.ui.InsertRowBefore.static.commandName = 'insertRowBefore';
+ve.ui.toolFactory.register( ve.ui.InsertRowBefore );
+
+ve.ui.InsertRowAfter = function VeUiInsertRowAfter( toolGroup, config ) {
+       ve.ui.Tool.call( this, toolGroup, config );
+};
+OO.inheritClass( ve.ui.InsertRowAfter, ve.ui.Tool );
+ve.ui.InsertRowAfter.static.name = 'insertRowAfter';
+ve.ui.InsertRowAfter.static.group = 'table';
+ve.ui.InsertRowAfter.static.autoAddToCatchall = false;
+ve.ui.InsertRowAfter.static.icon = 'table-insert-row-after';
+ve.ui.InsertRowAfter.static.title = 'Below';
+ve.ui.InsertRowAfter.static.commandName = 'insertRowAfter';
+ve.ui.toolFactory.register( ve.ui.InsertRowAfter );
+
+ve.ui.DeleteRow = function VeUiDeleteRow( toolGroup, config ) {
+       ve.ui.Tool.call( this, toolGroup, config );
+};
+OO.inheritClass( ve.ui.DeleteRow, ve.ui.Tool );
+ve.ui.DeleteRow.static.name = 'deleteRow';
+ve.ui.DeleteRow.static.group = 'table';
+ve.ui.DeleteRow.static.autoAddToCatchall = false;
+ve.ui.DeleteRow.static.icon = 'table-delete-row';
+ve.ui.DeleteRow.static.title = OO.ui.deferMsg( 
'visualeditor-inspector-remove-tooltip' );
+ve.ui.DeleteRow.static.commandName = 'deleteRow';
+ve.ui.toolFactory.register( ve.ui.DeleteRow );
+
+ve.ui.InsertColumnBefore = function VeUiInsertColumnBefore( toolGroup, config 
) {
+       ve.ui.Tool.call( this, toolGroup, config );
+};
+OO.inheritClass( ve.ui.InsertColumnBefore, ve.ui.Tool );
+ve.ui.InsertColumnBefore.static.name = 'insertColumnBefore';
+ve.ui.InsertColumnBefore.static.group = 'table';
+ve.ui.InsertColumnBefore.static.autoAddToCatchall = false;
+ve.ui.InsertColumnBefore.static.icon = 'table-insert-column-before';
+ve.ui.InsertColumnBefore.static.title = 'Left';
+ve.ui.InsertColumnBefore.static.commandName = 'insertColumnBefore';
+ve.ui.toolFactory.register( ve.ui.InsertColumnBefore );
+
+ve.ui.InsertColumnAfter = function VeUiInsertColumnAfter( toolGroup, config ) {
+       ve.ui.Tool.call( this, toolGroup, config );
+};
+OO.inheritClass( ve.ui.InsertColumnAfter, ve.ui.Tool );
+ve.ui.InsertColumnAfter.static.name = 'insertColumnAfter';
+ve.ui.InsertColumnAfter.static.group = 'table';
+ve.ui.InsertColumnAfter.static.autoAddToCatchall = false;
+ve.ui.InsertColumnAfter.static.icon = 'table-insert-column-after';
+ve.ui.InsertColumnAfter.static.title = 'Right';
+ve.ui.InsertColumnAfter.static.commandName = 'insertColumnAfter';
+ve.ui.toolFactory.register( ve.ui.InsertColumnAfter );
+
+ve.ui.DeleteColumn = function VeUiDeleteColumn( toolGroup, config ) {
+       ve.ui.Tool.call( this, toolGroup, config );
+};
+OO.inheritClass( ve.ui.DeleteColumn, ve.ui.Tool );
+ve.ui.DeleteColumn.static.name = 'deleteColumn';
+ve.ui.DeleteColumn.static.group = 'table';
+ve.ui.DeleteColumn.static.autoAddToCatchall = false;
+ve.ui.DeleteColumn.static.icon = 'table-delete-column';
+ve.ui.DeleteColumn.static.title = OO.ui.deferMsg( 
'visualeditor-inspector-remove-tooltip' );
+ve.ui.DeleteColumn.static.commandName = 'deleteColumn';
+ve.ui.toolFactory.register( ve.ui.DeleteColumn );
+
+/* Commands */
+
+ve.ui.commandRegistry.register(
+       new ve.ui.Command( 'insertTable', 'table', 'create', {
+               'header': true,
+               'rows': 3,
+               'cols': 4
+       } )
+);
+ve.ui.commandRegistry.register(
+       new ve.ui.Command( 'deleteTable', 'table', 'delete', 'table')
+);
+ve.ui.commandRegistry.register(
+       new ve.ui.Command( 'insertRowBefore', 'table', 'insert', 'row', 
'before')
+);
+ve.ui.commandRegistry.register(
+       new ve.ui.Command( 'insertRowAfter', 'table', 'insert', 'row', 'after')
+);
+ve.ui.commandRegistry.register(
+       new ve.ui.Command( 'deleteRow', 'table', 'delete', 'row')
+);
+ve.ui.commandRegistry.register(
+       new ve.ui.Command( 'insertColumnBefore', 'table', 'insert', 'col', 
'before')
+);
+ve.ui.commandRegistry.register(
+       new ve.ui.Command( 'insertColumnAfter', 'table', 'insert', 'col', 
'after')
+);
+ve.ui.commandRegistry.register(
+       new ve.ui.Command( 'deleteColumn', 'table', 'delete', 'col')
+);

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

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

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

Reply via email to