You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by mc...@apache.org on 2016/04/18 18:34:06 UTC

[1/4] nifi git commit: NIFI-1323: - Creating graph control panels for navigating and operating. - Remove controls from the header into the graph control panels where appropriate. - Removing unneeded styles and images.

Repository: nifi
Updated Branches:
  refs/heads/NIFI-1323 [created] 8c3f88f53


http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.svg
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.svg b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.svg
new file mode 100644
index 0000000..958b792
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.svg
@@ -0,0 +1,29 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Copyright (C) 2016 by original authors @ fontello.com</metadata>
+<defs>
+<font id="nifi-icon-font" horiz-adv-x="1000" >
+<font-face font-family="nifi-icon-font" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
+<missing-glyph horiz-adv-x="1000" />
+<glyph glyph-name="compass" unicode="&#xe800;" d="m357 243l143 71-143 72v-143z m214 330v-303l-285-143v303z m161-223q0 83-41 152t-110 111-152 41-153-41-110-111-41-152 41-152 110-111 153-41 152 41 110 111 41 152z m125 0q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
+<glyph glyph-name="minus-squared-alt" unicode="&#xe801;" d="m643 404v-36q0-8-5-13t-13-5h-464q-8 0-13 5t-5 13v36q0 7 5 12t13 5h464q8 0 13-5t5-12z m71-250v464q0 37-26 63t-63 26h-464q-37 0-63-26t-27-63v-464q0-37 27-64t63-26h464q37 0 63 26t26 64z m72 464v-464q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h464q66 0 114-48t47-113z" horiz-adv-x="785.7" />
+<glyph glyph-name="bullseye" unicode="&#xe802;" d="m571 350q0-59-41-101t-101-42-101 42-42 101 42 101 101 42 101-42 41-101z m72 0q0 89-63 152t-151 62-152-62-63-152 63-151 152-63 151 63 63 151z m71 0q0-118-83-202t-202-84-202 84-84 202 84 202 202 84 202-84 83-202z m72 0q0 73-29 139t-76 114-114 76-138 28-139-28-114-76-76-114-29-139 29-139 76-113 114-77 139-28 138 28 114 77 76 113 29 139z m71 0q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
+<glyph glyph-name="plus-squared-alt" unicode="&#xe803;" d="m643 404v-36q0-8-5-13t-13-5h-196v-196q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v196h-196q-8 0-13 5t-5 13v36q0 7 5 12t13 5h196v197q0 8 5 13t13 5h36q8 0 13-5t5-13v-197h196q8 0 13-5t5-13z m71-250v464q0 37-26 63t-63 26h-464q-37 0-63-26t-27-63v-464q0-37 27-64t63-26h464q37 0 63 26t26 64z m72 464v-464q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h464q66 0 114-48t47-113z" horiz-adv-x="785.7" />
+<glyph glyph-name="zoom-in" unicode="&#xe804;" d="m571 404v-36q0-7-5-13t-12-5h-125v-125q0-7-6-13t-12-5h-36q-7 0-13 5t-5 13v125h-125q-7 0-12 5t-6 13v36q0 7 6 12t12 5h125v125q0 8 5 13t13 5h36q7 0 12-5t6-13v-125h125q7 0 12-5t5-12z m72-18q0 103-74 176t-176 74-177-74-73-176 73-177 177-73 176 73 74 177z m286-465q0-29-21-50t-51-21q-30 0-50 21l-191 191q-100-69-223-69-80 0-153 31t-125 84-84 125-31 153 31 152 84 126 125 84 153 31 152-31 126-84 84-126 31-152q0-123-69-223l191-191q21-21 21-51z" horiz-adv-x="928.6" />
+<glyph glyph-name="zoom-out" unicode="&#xe805;" d="m571 404v-36q0-7-5-13t-12-5h-322q-7 0-12 5t-6 13v36q0 7 6 12t12 5h322q7 0 12-5t5-12z m72-18q0 103-74 176t-176 74-177-74-73-176 73-177 177-73 176 73 74 177z m286-465q0-29-21-50t-51-21q-30 0-50 21l-191 191q-100-69-223-69-80 0-153 31t-125 84-84 125-31 153 31 152 84 126 125 84 153 31 152-31 126-84 84-126 31-152q0-123-69-223l191-191q21-21 21-51z" horiz-adv-x="928.6" />
+<glyph glyph-name="fighter-jet" unicode="&#xe806;" d="m1071 314q0-18-160-53l-197-18-125-36h-35l-164-196h39q14 0 25-3t10-6-10-7-25-2h-179v18h36v232h-90l-107-125h-53l-18 18v107h18v18h71v4l-107 14v71l107 13v5h-71v18h-18v107l18 18h53l107-125h90v232h-36v18h179q14 0 25-3t10-6-10-7-25-2h-39l164-197h35l125-35 197-18q145-33 160-52z" horiz-adv-x="1071.4" />
+<glyph glyph-name="award" unicode="&#xe807;" d="m256 357q-42 91-42 207h-143v-53q0-44 53-91t132-63z m601 154v53h-143q0-116-41-207 79 16 131 63t53 91z m72 71v-71q0-40-24-80t-62-73-97-54-120-25q-23-30-53-53-21-19-29-40t-8-50q0-30 17-51t54-21q42 0 75-25t32-64v-36q0-8-5-13t-13-5h-464q-8 0-13 5t-5 13v36q0 39 33 64t74 25q38 0 55 21t17 51q0 28-8 50t-30 40q-29 23-53 53-63 3-120 25t-96 54-63 73-23 80v71q0 22 16 38t38 16h160v53q0 37 27 63t63 27h321q37 0 63-27t26-63v-53h161q22 0 38-16t16-38z" horiz-adv-x="928.6" />
+<glyph glyph-name="toggle-off" unicode="&#xe808;" d="m643 350q0 58-23 111t-61 91-91 61-111 23-111-23-91-61-61-91-23-111 23-111 61-91 91-61 111-23 111 23 91 61 61 91 23 111z m428 0q0 58-22 111t-61 91-92 61-110 23h-216q67-51 106-125t38-161-38-161-106-125h216q58 0 110 23t92 61 61 91 22 111z m72 0q0-73-29-139t-76-113-114-77-138-28h-429q-72 0-138 28t-114 77-76 113-29 139 29 139 76 114 114 76 138 28h429q72 0 138-28t114-76 76-114 29-139z" horiz-adv-x="1142.9" />
+<glyph glyph-name="toggle-on" unicode="&#xe809;" d="m0 350q0 73 29 139t76 114 114 76 138 28h429q72 0 138-28t114-76 76-114 29-139-29-139-76-113-114-77-138-28h-429q-72 0-138 28t-114 77-76 113-29 139z m786-286q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23-111-23-91-61-61-91-23-111 23-111 61-91 91-61 111-23z" horiz-adv-x="1142.9" />
+<glyph glyph-name="play" unicode="&#xe80a;" d="m772 333l-741-412q-13-7-22-2t-9 20v822q0 14 9 20t22-2l741-412q13-7 13-17t-13-17z" horiz-adv-x="785.7" />
+<glyph glyph-name="stop" unicode="&#xe80b;" d="m857 743v-786q0-14-10-25t-26-11h-785q-15 0-25 11t-11 25v786q0 14 11 25t25 11h785q15 0 26-11t10-25z" horiz-adv-x="857.1" />
+<glyph glyph-name="th" unicode="&#xe80c;" d="m286 154v-108q0-22-16-37t-38-16h-178q-23 0-38 16t-16 37v108q0 22 16 38t38 15h178q22 0 38-15t16-38z m0 285v-107q0-22-16-38t-38-15h-178q-23 0-38 15t-16 38v107q0 23 16 38t38 16h178q22 0 38-16t16-38z m357-285v-108q0-22-16-37t-38-16h-178q-23 0-38 16t-16 37v108q0 22 16 38t38 15h178q23 0 38-15t16-38z m-357 571v-107q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v107q0 22 16 38t38 16h178q22 0 38-16t16-38z m357-286v-107q0-22-16-38t-38-15h-178q-23 0-38 15t-16 38v107q0 23 16 38t38 16h178q23 0 38-16t16-38z m357-285v-108q0-22-16-37t-38-16h-178q-22 0-38 16t-16 37v108q0 22 16 38t38 15h178q23 0 38-15t16-38z m-357 571v-107q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v107q0 22 16 38t38 16h178q23 0 38-16t16-38z m357-286v-107q0-22-16-38t-38-15h-178q-22 0-38 15t-16 38v107q0 23 16 38t38 16h178q23 0 38-16t16-38z m0 286v-107q0-22-16-38t-38-16h-178q-22 0-38 16t-16 38v107q0 22 16 38t38 16h178q23 0 38-16t16-38z" horiz-adv-x="1000" />
+<glyph glyph-name="paste" unicode="&#xe80d;" d="m429-79h500v358h-233q-22 0-38 15t-15 38v232h-214v-643z m142 804v36q0 7-5 12t-12 6h-393q-7 0-13-6t-5-12v-36q0-7 5-13t13-5h393q7 0 12 5t5 13z m143-375h167l-167 167v-167z m286-71v-375q0-23-16-38t-38-16h-535q-23 0-38 16t-16 38v89h-303q-23 0-38 16t-16 37v750q0 23 16 38t38 16h607q22 0 38-16t15-38v-183q12-7 20-15l228-228q16-16 27-42t11-50z" horiz-adv-x="1000" />
+<glyph glyph-name="bus" unicode="&#xe80e;" d="m214 171q0 30-21 51t-50 21-51-21-21-51 21-50 51-21 50 21 21 50z m572 0q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m-26 221l-40 215q-3 13-13 21t-22 8h-513q-12 0-22-8t-13-21l-40-215q-3-16 8-29t27-13h593q17 0 27 13t8 29z m-126 342q0 11-8 19t-19 8h-357q-11 0-19-8t-8-19 8-19 19-8h357q11 0 19 8t8 19z m223-405v-336h-71v-72q0-29-21-50t-51-21-50 21-21 50v72h-429v-72q0-29-21-50t-50-21-51 21-21 50v72h-71v336q0 63 14 125l57 253q5 44 55 77t128 49 175 17 174-17 128-49 55-77l58-253q13-57 13-125z" horiz-adv-x="857.1" />
+<glyph glyph-name="rocket" unicode="&#xe80f;" d="m804 600q0 22-16 38t-38 16-38-16-16-38 16-38 38-16 38 16 16 38z m125 161q0-139-43-241t-141-201q-45-44-109-98l-11-211q-1-9-9-15l-214-125q-4-2-9-2-7 0-13 5l-36 36q-7 7-4 17l47 155-156 156-155-47q-1-1-5-1-7 0-12 5l-36 36q-10 11-3 22l125 214q6 8 15 9l211 11q54 64 98 109 105 104 200 144t241 40q7 0 13-6t6-12z" horiz-adv-x="928.6" />
+<glyph glyph-name="fire" unicode="&#xe810;" d="m786-96v-36q0-7-6-13t-12-5h-750q-7 0-13 5t-5 13v36q0 7 5 12t13 5h750q7 0 12-5t6-12z m-143 589q0-44-14-80t-36-63-48-49-54-44-49-40-35-45-14-54q0-54 37-125l-2 0 1 0q-51 23-90 46t-77 56-63 68-41 84-15 103q0 44 14 80t35 63 49 49 54 43 48 41 36 45 14 54q0 52-37 125l2-1-1 1q50-23 89-46t78-56 63-68 41-84 15-103z" horiz-adv-x="785.7" />
+<glyph glyph-name="brush-1" unicode="&#xe812;" d="m901 850q39 0 69-26t29-65q0-35-25-84-185-351-260-420-54-51-121-51-71 0-121 52t-51 122q0 72 52 119l356 323q33 30 72 30z m-507-577q22-42 59-73t84-42l1-40q2-119-72-193t-195-75q-68 0-121 26t-86 71-48 102-16 123q4-3 23-17t35-25 32-20 26-9q23 0 31 20 14 37 32 63t39 42 49 27 57 14 70 6z" horiz-adv-x="1000" />
+</font>
+</defs>
+</svg>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.ttf
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.ttf b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.ttf
new file mode 100644
index 0000000..8f0def4
Binary files /dev/null and b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.ttf differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.woff
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.woff b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.woff
new file mode 100644
index 0000000..39ccab3
Binary files /dev/null and b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.woff differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/bgOutline.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/bgOutline.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/bgOutline.png
deleted file mode 100755
index 65b3636..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/bgOutline.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/bgToolbarBtnBorder.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/bgToolbarBtnBorder.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/bgToolbarBtnBorder.png
deleted file mode 100755
index cb18212..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/bgToolbarBtnBorder.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonColor.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonColor.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonColor.png
deleted file mode 100755
index 7f0cc06..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonColor.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonCopy.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonCopy.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonCopy.png
deleted file mode 100755
index 584f601..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonCopy.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonDelete.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonDelete.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonDelete.png
deleted file mode 100755
index dd1cc95..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonDelete.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonDisable.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonDisable.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonDisable.png
deleted file mode 100755
index 3b2ddbf..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonDisable.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonEnable.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonEnable.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonEnable.png
deleted file mode 100755
index 664a1d6..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonEnable.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonGroup.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonGroup.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonGroup.png
deleted file mode 100755
index 81f79e1..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonGroup.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonOutline.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonOutline.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonOutline.png
deleted file mode 100755
index 56ec870..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonOutline.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPanDown.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPanDown.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPanDown.png
deleted file mode 100755
index 091ad18..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPanDown.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPanLeft.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPanLeft.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPanLeft.png
deleted file mode 100755
index 05d746c..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPanLeft.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPanRight.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPanRight.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPanRight.png
deleted file mode 100755
index befc1fc..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPanRight.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPanUp.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPanUp.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPanUp.png
deleted file mode 100755
index c6bae8d..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPanUp.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPaste.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPaste.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPaste.png
deleted file mode 100755
index 7e19a9a..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonPaste.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonRun.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonRun.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonRun.png
deleted file mode 100755
index 08aceb5..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonRun.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonStop.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonStop.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonStop.png
deleted file mode 100755
index 2c6bd27..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonStop.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonTemplate.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonTemplate.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonTemplate.png
deleted file mode 100755
index 2f52861..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonTemplate.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonZoom100.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonZoom100.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonZoom100.png
deleted file mode 100755
index 7a2e605..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonZoom100.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonZoomFit.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonZoomFit.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonZoomFit.png
deleted file mode 100755
index ddecdbd..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonZoomFit.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonZoomIn.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonZoomIn.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonZoomIn.png
deleted file mode 100755
index 311da20..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonZoomIn.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonZoomOut.png
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonZoomOut.png b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonZoomOut.png
deleted file mode 100755
index 3ae4526..0000000
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/images/buttonZoomOut.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-birdseye.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-birdseye.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-birdseye.js
index 01abd31..4e92825 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-birdseye.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-birdseye.js
@@ -206,48 +206,6 @@ nf.Birdseye = (function () {
     return {
         init: function () {
             var birdseye = $('#birdseye');
-            var birdseyeContainer = $('#birdseye-container');
-            $('#birdseye-collapse').click(function () {
-                // update the outline collapse icon
-                if (birdseye.is(':visible')) {
-                    $(this).removeClass('birdseye-expanded-hover').addClass('birdseye-collapsed-hover');
-
-                    // hide the outline
-                    birdseye.hide();
-                    birdseyeContainer.hide();
-                    visible = false;
-
-                    // shift the counts position
-                    $('#controller-counts').css('margin-right', '-13px');
-                } else {
-                    $(this).removeClass('birdseye-collapsed-hover').addClass('birdseye-expanded-hover');
-
-                    // shift the counts position
-                    $('#controller-counts').css('margin-right', '195px');
-
-                    // show the outline
-                    birdseye.show();
-                    birdseyeContainer.show();
-                    visible = true;
-
-                    // refresh the birdseye as it may have changed
-                    refresh(nf.Graph.get());
-                }
-            }).mouseover(function () {
-                // update the outline collapse icon
-                if (birdseye.is(':visible')) {
-                    $(this).removeClass('birdseye-expanded').addClass('birdseye-expanded-hover');
-                } else {
-                    $(this).removeClass('birdseye-collapsed').addClass('birdseye-collapsed-hover');
-                }
-            }).mouseout(function () {
-                // update the outline collapse icon
-                if (birdseye.is(':visible')) {
-                    $(this).removeClass('birdseye-expanded-hover').addClass('birdseye-expanded');
-                } else {
-                    $(this).removeClass('birdseye-collapsed-hover').addClass('birdseye-collapsed');
-                }
-            });
 
             d3.select('#birdseye').append('canvas')
                     .attr('id', 'birdseye-canvas')
@@ -329,6 +287,9 @@ nf.Birdseye = (function () {
                         y: 0
                     })
                     .call(brush);
+
+            //// clear
+            //birdseye.append('<div class="clear"></div>');
         },
         
         /**
@@ -338,6 +299,29 @@ nf.Birdseye = (function () {
             if (visible) {
                 refresh(nf.Graph.get());
             }
+        },
+
+        /**
+         * Function that needs to be call when the birdseye visibility changes.
+         *
+         * @param {boolean} isVisible
+         */
+        updateBirdseyeVisibility: function (isVisible) {
+            var birdseye = $('#birdseye');
+
+            // update the outline collapse icon
+            if (isVisible) {
+                // show the outline
+                birdseye.show();
+                visible = true;
+
+                // refresh the birdseye as it may have changed
+                refresh(nf.Graph.get());
+            } else {
+                // hide the outline
+                birdseye.hide();
+                visible = false;
+            }
         }
     };
 }());
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-toolbar.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-toolbar.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-toolbar.js
index 8aade5c..e1aec7f 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-toolbar.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-toolbar.js
@@ -19,81 +19,84 @@
 
 nf.CanvasToolbar = (function () {
 
-    var actions;
+    /**
+     * Initializes the specified button and associates the specified action.
+     *
+     * @param button
+     * @param action
+     */
+    var initializeButton = function (button, action) {
+        button.on('click', function () {
+            if (!$(this).hasClass('icon-disabled')) {
+                // hide the context menu
+                nf.ContextMenu.hide();
+
+                // execute the action
+                nf.Actions[action](nf.CanvasUtils.getSelection());
+            }
+        });
+    };
+
+    var enableButton = function (button) {
+        button.addClass('pointer').find('i').removeClass('icon-disabled');
+    };
+
+    var disableButton = function (button) {
+        button.removeClass('pointer').find('i').addClass('icon-disabled');
+    };
 
     return {
         /**
          * Initializes the canvas toolbar.
          */
         init: function () {
-            actions = {};
-
-            var separator = $('<div/>').addClass('control-separator');
-            var border = $('<div/>').addClass('control-border');
-
-            var globalControls = $('#global-controls')[0];
-            border.clone().appendTo(globalControls);
-            actions['enable'] = new nf.ToolbarAction(globalControls, 'enable', 'action-enable', 'enable-all', 'enable-all-hover', 'enable-all-disable', 'Enable');
-            border.clone().appendTo(globalControls);
-            actions['disable'] = new nf.ToolbarAction(globalControls, 'disable', 'action-disable', 'disable-all', 'disable-all-hover', 'disable-all-disable', 'Disable');
-            border.clone().appendTo(globalControls);
-            separator.clone().appendTo(globalControls);
-            border.clone().appendTo(globalControls);
-            actions['start'] = new nf.ToolbarAction(globalControls, 'start', 'action-start', 'start-all', 'start-all-hover', 'start-all-disable', 'Start');
-            border.clone().appendTo(globalControls);
-            actions['stop'] = new nf.ToolbarAction(globalControls, 'stop', 'action-stop', 'stop-all', 'stop-all-hover', 'stop-all-disable', 'Stop');
-            border.clone().appendTo(globalControls);
-            separator.clone().appendTo(globalControls);
-            border.clone().appendTo(globalControls);
-            actions['template'] = new nf.ToolbarAction(globalControls, 'template', 'action-template', 'template', 'template-hover', 'template-disable', 'Create Template');
-            border.clone().appendTo(globalControls);
-            separator.clone().appendTo(globalControls);
-            border.clone().addClass('secondary').appendTo(globalControls);
-            actions['copy'] = new nf.ToolbarAction(globalControls, 'copy', 'action-copy', 'copy', 'copy-hover', 'copy-disable', 'Copy', true);
-            border.clone().addClass('secondary').appendTo(globalControls);
-            actions['paste'] = new nf.ToolbarAction(globalControls, 'paste', 'action-paste', 'paste', 'paste-hover', 'paste-disable', 'Paste', true);
-            border.clone().addClass('secondary').appendTo(globalControls);
-            separator.clone().addClass('secondary').appendTo(globalControls);
-            border.clone().addClass('secondary').appendTo(globalControls);
-            actions['group'] = new nf.ToolbarAction(globalControls, 'group', 'action-group', 'group', 'group-hover', 'group-disable', 'Group', true);
-            border.clone().addClass('secondary').appendTo(globalControls);
-            separator.clone().addClass('secondary').appendTo(globalControls);
-            border.clone().addClass('secondary').appendTo(globalControls);
-            actions['fill'] = new nf.ToolbarAction(globalControls, 'fillColor', 'action-fill', 'fill', 'fill-hover', 'fill-disable', 'Change Color', true);
-            border.clone().addClass('secondary').appendTo(globalControls);
-            separator.clone().addClass('secondary').appendTo(globalControls);
-            border.clone().addClass('secondary').appendTo(globalControls);
-            actions['delete'] = new nf.ToolbarAction(globalControls, 'delete', 'action-delete', 'delete', 'delete-hover', 'delete-disable', 'Delete', true);
-            border.addClass('secondary').appendTo(globalControls);
-            separator.addClass('secondary').appendTo(globalControls);
+            var disable = $('#operate-disable');
+            var enable = $('#operate-enable');
+            var start = $('#operate-start');
+            var stop = $('#operate-stop');
+            var template = $('#operate-template');
+            var copy = $('#operate-copy');
+            var paste = $('#operate-paste');
+            var group = $('#operate-group');
+            var color = $('#operate-color');
+
+            // initialize the buttons
+            initializeButton(disable, 'disable');
+            initializeButton(enable, 'enable');
+            initializeButton(start, 'start');
+            initializeButton(stop, 'stop');
+            initializeButton(template, 'template');
+            initializeButton(copy, 'copy');
+            initializeButton(paste, 'paste');
+            initializeButton(group, 'group');
+            initializeButton(color, 'fillColor');
 
             // set up initial states for selection-less items
             if (nf.Common.isDFM()) {
-                actions['start'].enable();
-                actions['stop'].enable();
-                actions['template'].enable();
+                enableButton(start);
+                enableButton(stop);
+                enableButton(template);
             } else {
-                actions['start'].disable();
-                actions['stop'].disable();
-                actions['template'].disable();
+                disableButton(start);
+                disableButton(stop);
+                disableButton(template);
             }
 
             // disable actions that require selection
-            actions['enable'].disable();
-            actions['disable'].disable();
-            actions['copy'].disable();
-            actions['paste'].disable();
-            actions['fill'].disable();
-            actions['delete'].disable();
-            actions['group'].disable();
+            disableButton(enable);
+            disableButton(disable);
+            disableButton(copy);
+            disableButton(paste);
+            disableButton(color);
+            disableButton(group);
 
             // add a clipboard listener if appropriate
             if (nf.Common.isDFM()) {
                 nf.Clipboard.addListener(this, function (action, data) {
                     if (nf.Clipboard.isCopied()) {
-                        actions['paste'].enable();
+                        enableButton(paste);
                     } else {
-                        actions['paste'].disable();
+                        disableButton(paste);
                     }
                 });
             }
@@ -103,66 +106,67 @@ nf.CanvasToolbar = (function () {
          * Called when the selection changes to update the toolbar appropriately.
          */
         refresh: function () {
-            // wait for the toolbar to initialize
-            if (nf.Common.isUndefined(actions)) {
-                return;
-            }
-
             // only refresh the toolbar if DFM
             if (nf.Common.isDFM()) {
+                var disable = $('#operate-disable');
+                var enable = $('#operate-enable');
+                var copy = $('#operate-copy');
+                var group = $('#operate-group');
+                var color = $('#operate-color');
+
                 var selection = nf.CanvasUtils.getSelection();
 
                 // if all selected components are deletable enable the delete button
-                if (!selection.empty()) {
-                    var enableDelete = true;
-                    selection.each(function (d) {
-                        if (!nf.CanvasUtils.isDeletable(d3.select(this))) {
-                            enableDelete = false;
-                            return false;
-                        }
-                    });
-                    if (enableDelete) {
-                        actions['delete'].enable();
-                    } else {
-                        actions['delete'].disable();
-                    }
-                } else {
-                    actions['delete'].disable();
-                }
+                //if (!selection.empty()) {
+                //    var enableDelete = true;
+                //    selection.each(function (d) {
+                //        if (!nf.CanvasUtils.isDeletable(d3.select(this))) {
+                //            enableDelete = false;
+                //            return false;
+                //        }
+                //    });
+                //    if (enableDelete) {
+                //        actions['delete'].enable();
+                //    } else {
+                //        actions['delete'].disable();
+                //    }
+                //} else {
+                //    actions['delete'].disable();
+                //}
 
                 // if there are any copyable components enable the button
                 if (nf.CanvasUtils.isCopyable(selection)) {
-                    actions['copy'].enable();
+                    enableButton(copy);
                 } else {
-                    actions['copy'].disable();
+                    disableButton(copy);
                 }
 
                 // determine if the selection is groupable
                 if (!selection.empty() && nf.CanvasUtils.isDisconnected(selection)) {
-                    actions['group'].enable();
+                    enableButton(group);
                 } else {
-                    actions['group'].disable();
+                    disableButton(group);
                 }
 
                 // if there are any colorable components enable the fill button
                 if (nf.CanvasUtils.isColorable(selection)) {
-                    actions['fill'].enable();
+                    enableButton(color);
                 } else {
-                    actions['fill'].disable();
+                    disableButton(color);
                 }
                 
                 // ensure the selection supports enable
                 if (nf.CanvasUtils.canEnable(selection)) {
-                    actions['enable'].enable();
+                    enableButton(enable);
                 } else {
-                    actions['enable'].disable();
+                    disableButton(enable);
                 }
 
                 // ensure the selection supports disable
                 if (nf.CanvasUtils.canDisable(selection)) {
-                    actions['disable'].enable();
+                    enableButton(disable);
                 } else {
-                    actions['disable'].disable();
+                    disableButton(disable);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js
index 428ddf2..348940c 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js
@@ -1141,7 +1141,6 @@ nf.Canvas = (function () {
                             nf.CanvasToolbar.init();
                             nf.CanvasToolbox.init();
                             nf.CanvasHeader.init(loginDetails.supportsLogin);
-                            nf.GraphControl.init();
                             nf.Search.init();
                             nf.Settings.init();
                             nf.Actions.init();
@@ -1176,6 +1175,8 @@ nf.Canvas = (function () {
                             nf.RemoteProcessGroupDetails.init();
                             nf.GoTo.init();
                             nf.Graph.init().done(function () {
+                                nf.GraphControl.init();
+
                                 // determine the split between the polling
                                 var pollingSplit = autoRefreshIntervalSeconds / 2;
 

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-graph-control.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-graph-control.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-graph-control.js
index b6f2a51..599457a 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-graph-control.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-graph-control.js
@@ -19,73 +19,119 @@
 
 nf.GraphControl = (function () {
 
+    var MIN_GRAPH_CONTROL_TOP = 117;
+
     var config = {
         translateIncrement: 20
     };
 
-    return {
-        /**
-         * Initializes the graph controls.
-         */
-        init: function () {
-            // pan up
-            nf.Common.addHoverEffect('#pan-up-button', 'pan-up', 'pan-up-hover').on('click', function () {
-                var translate = nf.Canvas.View.translate();
-                nf.Canvas.View.translate([translate[0], translate[1] + config.translateIncrement]);
+    /**
+     * Opens the specified graph control.
+     *
+     * @param {jQuery} graphControl
+     */
+    var openGraphControl = function (graphControl) {
+        // undock if necessary
+        if ($('div.graph-control-content').is(':visible') === false) {
+            $('#graph-controls div.graph-control-docked').hide();
+            $('#graph-controls div.graph-control-header-container').show();
+        }
 
-                // hide the context menu
-                nf.ContextMenu.hide();
+        // show the content of the specified graph control
+        graphControl.children('div.graph-control-content').show();
+        graphControl.find('i.graph-control-expansion').removeClass('icon-plus-squared-alt').addClass('icon-minus-squared-alt');
 
-                // refresh the canvas
-                nf.Canvas.View.refresh({
-                    transition: true
-                });
-            });
+        // handle specific actions as necessary
+        if (graphControl.attr('id') === 'navigation-control') {
+            nf.Birdseye.updateBirdseyeVisibility(true);
+        }
 
-            // pan down
-            nf.Common.addHoverEffect('#pan-down-button', 'pan-down', 'pan-down-hover').on('click', function () {
-                var translate = nf.Canvas.View.translate();
-                nf.Canvas.View.translate([translate[0], translate[1] - config.translateIncrement]);
+        // get the current visibility
+        var graphControlVisibility = nf.Storage.getItem('graph-control-visibility');
+        if (graphControlVisibility === null) {
+            graphControlVisibility = {};
+        }
 
-                // hide the context menu
-                nf.ContextMenu.hide();
+        // update the visibility for this graph control
+        var graphControlId = graphControl.attr('id');
+        graphControlVisibility[graphControlId] = true;
+        nf.Storage.setItem('graph-control-visibility', graphControlVisibility);
 
-                // refresh the canvas
-                nf.Canvas.View.refresh({
-                    transition: true
-                });
-            });
+        // reset the graph control position
+        positionGraphControls();
+    };
 
-            // pan left
-            nf.Common.addHoverEffect('#pan-left-button', 'pan-left', 'pan-left-hover').on('click', function () {
-                var translate = nf.Canvas.View.translate();
-                nf.Canvas.View.translate([translate[0] + config.translateIncrement, translate[1]]);
+    /**
+     * Hides the specified graph control.
+     *
+     * @param {jQuery} graphControl
+     */
+    var hideGraphControl = function (graphControl) {
+        // hide the content of the specified graph control
+        graphControl.children('div.graph-control-content').hide();
+        graphControl.find('i.graph-control-expansion').removeClass('icon-minus-squared-alt').addClass('icon-plus-squared-alt');
+
+        // dock if necessary
+        if ($('div.graph-control-content').is(':visible') === false) {
+            $('#graph-controls div.graph-control-header-container').hide();
+            $('#graph-controls div.graph-control-docked').show();
+        }
 
-                // hide the context menu
-                nf.ContextMenu.hide();
+        // handle specific actions as necessary
+        if (graphControl.attr('id') === 'navigation-control') {
+            nf.Birdseye.updateBirdseyeVisibility(false);
+        }
 
-                // refresh the canvas
-                nf.Canvas.View.refresh({
-                    transition: true
-                });
-            });
+        // get the current visibility
+        var graphControlVisibility = nf.Storage.getItem('graph-control-visibility');
+        if (graphControlVisibility === null) {
+            graphControlVisibility = {};
+        }
 
-            // pan right
-            nf.Common.addHoverEffect('#pan-right-button', 'pan-right', 'pan-right-hover').on('click', function () {
-                var translate = nf.Canvas.View.translate();
-                nf.Canvas.View.translate([translate[0] - config.translateIncrement, translate[1]]);
+        // update the visibility for this graph control
+        var graphControlId = graphControl.attr('id');
+        graphControlVisibility[graphControlId] = false;
+        nf.Storage.setItem('graph-control-visibility', graphControlVisibility);
 
-                // hide the context menu
-                nf.ContextMenu.hide();
+        // reset the graph control position
+        positionGraphControls();
+    };
 
-                // refresh the canvas
-                nf.Canvas.View.refresh({
-                    transition: true
-                });
+    /**
+     * Positions the graph controls based on the size of the screen.
+     */
+    var positionGraphControls = function () {
+        var windowHeight = $(window).height();
+        var navigationHeight = $('#navigation-control').outerHeight();
+        var operationHeight = $('#operation-control').outerHeight();
+        var graphControlTop = (windowHeight / 2) - ((navigationHeight + operationHeight) / 2);
+
+        $('#graph-controls').css('top', Math.max(MIN_GRAPH_CONTROL_TOP, graphControlTop));
+    };
+
+    return {
+        /**
+         * Initializes the graph controls.
+         */
+        init: function () {
+
+            // graph control undock
+            $('#graph-controls').on('click', 'div.graph-control-docked', function () {
+                openGraphControl($(this).parent());
+            });
+
+            // handle expansion
+            $('#graph-controls').on('click', 'i.graph-control-expansion', function () {
+                var icon = $(this);
+                if (icon.hasClass('icon-plus-squared-alt')) {
+                    openGraphControl(icon.closest('div.graph-control'));
+                } else {
+                    hideGraphControl(icon.closest('div.graph-control'));
+                }
             });
 
             // zoom in
-            nf.Common.addHoverEffect('#zoom-in-button', 'zoom-in', 'zoom-in-hover').on('click', function () {
+            $('#naviagte-zoom-in').on('click', function () {
                 nf.Canvas.View.zoomIn();
 
                 // hide the context menu
@@ -98,7 +144,7 @@ nf.GraphControl = (function () {
             });
 
             // zoom out
-            nf.Common.addHoverEffect('#zoom-out-button', 'zoom-out', 'zoom-out-hover').on('click', function () {
+            $('#naviagte-zoom-out').on('click', function () {
                 nf.Canvas.View.zoomOut();
 
                 // hide the context menu
@@ -111,7 +157,7 @@ nf.GraphControl = (function () {
             });
 
             // zoom fit
-            nf.Common.addHoverEffect('#zoom-fit-button', 'fit-image', 'fit-image-hover').on('click', function () {
+            $('#naviagte-zoom-fit').on('click', function () {
                 nf.Canvas.View.fit();
 
                 // hide the context menu
@@ -124,7 +170,7 @@ nf.GraphControl = (function () {
             });
 
             // one to one
-            nf.Common.addHoverEffect('#zoom-actual-button', 'actual-size', 'actual-size-hover').on('click', function () {
+            $('#naviagte-zoom-actual-size').on('click', function () {
                 nf.Canvas.View.actualSize();
 
                 // hide the context menu
@@ -135,6 +181,27 @@ nf.GraphControl = (function () {
                     transition: true
                 });
             });
+
+            // initial the graph control visibility
+            var graphControlVisibility = nf.Storage.getItem('graph-control-visibility');
+            if (graphControlVisibility !== null) {
+                $.each(graphControlVisibility, function (id, isVisible) {
+                    var graphControl = $('#' + id);
+                    if (graphControl) {
+                        if (isVisible) {
+                            openGraphControl(graphControl);
+                        } else {
+                            hideGraphControl(graphControl);
+                        }
+                    }
+                });
+            }
+
+            // listen for browser resize events to reset the graph control positioning
+            $(window).resize(positionGraphControls);
+
+            // set the initial position
+            positionGraphControls();
         }
     };
 }());
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-toolbar-action.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-toolbar-action.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-toolbar-action.js
deleted file mode 100644
index a7b5f20..0000000
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-toolbar-action.js
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* global nf */
-
-/**
- * Creates a new toolbar action.
- * 
- * @argument {jQuery} container         The container to add the action to
- * @argument {string} action            The action to perform
- * @argument {string} id                The id of the element for the action
- * @argument {string} cls               The css class for the element
- * @argument {string} hoverCls          The css class for the hover state of the element
- * @argument {string} disableCls        The css class for the disabled state of the element
- * @argument {string} title             The title (tooltip) of the element
- * @argument {boolean} secondary        If secondary icon will be hidden as the screen gets smallers
- */
-nf.ToolbarAction = function (container, action, id, cls, hoverCls, disableCls, title, secondary) {
-    this.container = container;
-    this.action = action;
-    this.id = id;
-    this.cls = cls;
-    this.hoverCls = hoverCls;
-    this.disableCls = disableCls;
-    this.title = title;
-    this.secondary = secondary;
-    this.initAction();
-};
-
-nf.ToolbarAction.prototype.container = null;
-nf.ToolbarAction.prototype.action = null;
-nf.ToolbarAction.prototype.id = null;
-nf.ToolbarAction.prototype.cls = null;
-nf.ToolbarAction.prototype.hoverCls = null;
-nf.ToolbarAction.prototype.disableCls = null;
-nf.ToolbarAction.prototype.title = null;
-nf.ToolbarAction.prototype.secondary = null;
-
-/**
- * Initializes the toolbar action by dynamically creating an element,
- * registering mouse listeners, and inserting it into the DOM.
- */
-nf.ToolbarAction.prototype.initAction = function () {
-    var self = this;
-    var cls = 'toolbar-icon';
-    if (this.secondary === true) {
-        cls += ' secondary';
-    }
-
-    // create the default button
-    $('<div/>').addClass(cls).attr('id', this.id).attr('title', this.title).mouseover(function () {
-        if (!$(this).hasClass(self.disableCls)) {
-            $(this).removeClass(self.cls).addClass(self.hoverCls);
-        }
-    }).mouseout(function () {
-        if (!$(this).hasClass(self.disableCls)) {
-            $(this).addClass(self.cls).removeClass(self.hoverCls);
-        }
-    }).click(function () {
-        if (!$(this).hasClass(self.disableCls)) {
-            // hide the context menu
-            nf.ContextMenu.hide();
-            
-            // execute the action
-            nf.Actions[self.action](nf.CanvasUtils.getSelection());
-        }
-    }).appendTo(this.container);
-};
-
-/**
- * Enables the toolbar action.
- */
-nf.ToolbarAction.prototype.enable = function () {
-    $('#' + this.id).removeClass(this.disableCls).addClass(this.cls).addClass('pointer');
-};
-
-/**
- * Disables the toolbar action.
- */
-nf.ToolbarAction.prototype.disable = function () {
-    $('#' + this.id).removeClass(this.cls).addClass(this.disableCls).removeClass('pointer');
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-storage.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-storage.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-storage.js
index 7b0c3f6..0ea9b43 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-storage.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-storage.js
@@ -117,7 +117,7 @@ nf.Storage = (function () {
          * not exist, null is returned. If an item exists but cannot be parsed
          * or is malformed/unrecognized, null is returned.
          * 
-         * @param {type} key
+         * @param {string} key
          */
         getItem: function (key) {
             var entry = getEntry(key);


[3/4] nifi git commit: NIFI-1323: - Adding a delete button.

Posted by mc...@apache.org.
NIFI-1323:
- Adding a delete button.


Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/852622c9
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/852622c9
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/852622c9

Branch: refs/heads/NIFI-1323
Commit: 852622c956672d853103bf37e195b7ae9a1b4169
Parents: 6b57108
Author: Matt Gilman <ma...@gmail.com>
Authored: Mon Jan 11 19:11:43 2016 -0500
Committer: Matt Gilman <ma...@gmail.com>
Committed: Mon Jan 11 19:11:43 2016 -0500

----------------------------------------------------------------------
 .../WEB-INF/partials/canvas/navigation.jsp      |   4 +++
 .../src/main/webapp/css/navigation.css          |  14 ++++++++
 .../src/main/webapp/icon-font/config.json       |   6 ++++
 .../icon-font/css/nifi-icon-font-codes.css      |   1 +
 .../icon-font/css/nifi-icon-font-embedded.css   |  13 +++----
 .../icon-font/css/nifi-icon-font-ie7-codes.css  |   1 +
 .../webapp/icon-font/css/nifi-icon-font-ie7.css |   1 +
 .../webapp/icon-font/css/nifi-icon-font.css     |  13 +++----
 .../src/main/webapp/icon-font/demo.html         |  11 +++---
 .../webapp/icon-font/font/nifi-icon-font.eot    | Bin 8352 -> 8676 bytes
 .../webapp/icon-font/font/nifi-icon-font.svg    |   1 +
 .../webapp/icon-font/font/nifi-icon-font.ttf    | Bin 8160 -> 8484 bytes
 .../webapp/icon-font/font/nifi-icon-font.woff   | Bin 4844 -> 5028 bytes
 .../webapp/js/nf/canvas/nf-canvas-toolbar.js    |  36 ++++++++++---------
 14 files changed, 68 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/852622c9/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/navigation.jsp
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/navigation.jsp b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/navigation.jsp
index 714a0ed..ca36bf1 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/navigation.jsp
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/navigation.jsp
@@ -115,6 +115,10 @@
                     <div id="operate-color" class="action-button" title="Fill Color">
                         <i class="graph-control-action-icon nifi-icon icon-brush-1"></i>
                     </div>
+                    <div class="button-spacer-large">&nbsp;</div>
+                    <div id="operate-delete" class="action-button" title="Fill Color">
+                        <i class="graph-control-action-icon nifi-icon icon-trash-empty"></i><span id="operate-delete-text">DELETE</span>
+                    </div>
                     <div class="clear"></div>
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/nifi/blob/852622c9/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/navigation.css
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/navigation.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/navigation.css
index 9eac8ae..fa08b56 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/navigation.css
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/navigation.css
@@ -65,6 +65,20 @@ div.graph-control-content {
     margin-bottom: 5px;
 }
 
+/* operate buttons */
+
+#operate-delete {
+    width: 70px;
+}
+
+#operate-delete-text {
+    margin-right: 5px;
+    font-size: 11px;
+    color: #035f8f;
+}
+
+/* general graph control buttons */
+
 div.action-button {
     float: left;
     border: 1px solid #8ea8b2;

http://git-wip-us.apache.org/repos/asf/nifi/blob/852622c9/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/config.json
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/config.json b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/config.json
index f92c00b..fdaeeb6 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/config.json
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/config.json
@@ -31,6 +31,12 @@
       "src": "fontawesome"
     },
     {
+      "uid": "f48ae54adfb27d8ada53d0fd9e34ee10",
+      "css": "trash-empty",
+      "code": 59409,
+      "src": "fontawesome"
+    },
+    {
       "uid": "0b2b66e526028a6972d51a6f10281b4b",
       "css": "zoom-in",
       "code": 59396,

http://git-wip-us.apache.org/repos/asf/nifi/blob/852622c9/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-codes.css
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-codes.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-codes.css
index 382c656..88f6ee3 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-codes.css
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-codes.css
@@ -16,4 +16,5 @@
 .icon-bus:before { content: '\e80e'; } /* '' */
 .icon-rocket:before { content: '\e80f'; } /* '' */
 .icon-fire:before { content: '\e810'; } /* '' */
+.icon-trash-empty:before { content: '\e811'; } /* '' */
 .icon-brush-1:before { content: '\e812'; } /* '' */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/852622c9/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-embedded.css
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-embedded.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-embedded.css
index fa8ce02..fe557e1 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-embedded.css
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-embedded.css
@@ -1,15 +1,15 @@
 @font-face {
   font-family: 'nifi-icon-font';
-  src: url('../font/nifi-icon-font.eot?54105150');
-  src: url('../font/nifi-icon-font.eot?54105150#iefix') format('embedded-opentype'),
-       url('../font/nifi-icon-font.svg?54105150#nifi-icon-font') format('svg');
+  src: url('../font/nifi-icon-font.eot?67554557');
+  src: url('../font/nifi-icon-font.eot?67554557#iefix') format('embedded-opentype'),
+       url('../font/nifi-icon-font.svg?67554557#nifi-icon-font') format('svg');
   font-weight: normal;
   font-style: normal;
 }
 @font-face {
   font-family: 'nifi-icon-font';
-  src: url('data:application/octet-stream;base64,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') format('woff'),
-       url('data:application/octet-stream;base64,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') format('truetype');
+  src: url('data:application/octet-stream;base64,d09GRgABAAAAABOkAA4AAAAAISQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABRAAAAEQAAABWPilJO2NtYXAAAAGIAAAAOgAAAUrQIxm3Y3Z0IAAAAcQAAAAKAAAACgAAAABmcGdtAAAB0AAABZQAAAtwiJCQWWdhc3AAAAdkAAAACAAAAAgAAAAQZ2x5ZgAAB2wAAAjJAAANlF/I5uVoZWFkAAAQOAAAADQAAAA2CPdv3WhoZWEAABBsAAAAIAAAACQIJwPsaG10eAAAEIwAAAAnAAAAUEf0AABsb2NhAAAQtAAAACoAAAAqIkIejG1heHAAABDgAAAAIAAAACAAuQwSbmFtZQAAEQAAAAGPAAADFXPAaV9wb3N0AAASkAAAAKwAAADvu1f/93ByZXAAABM8AAAAZQAAAHvdawOFeJxjYGSeyTiBgZWBg6mKaQ8DA0MPhGZ8wGDIyMTAwMTAysyAFQSkuaYwOLxgeCHEHPQ/iyGKOZhhOlCYESQHAPSTC+J4nGNgYGBmgGAZBkYGEHAB8hjBfBYGDSDNBqQZGZgYGF4I/f8PUvCCAURLMELVAwEjG8OIBwB30QbAAAAAAAAAAAAAAAAAAAB4nK1WaXMTRxCd1WHLNj6CDxI2gVnGcox2VpjLCBDG7EoW4BzylexCjl1Ldu6LT/wG/ZpekVSRb/y0vB4d2GAnVVQoSv2m9+1M9+ueXpPQksReWI+k3HwpprY2aWTnSUg3bFqO4kPZ2QspU0z+LoiCaLXUvu04JCISgap1hSWC2PfI0iTjQ48yWrYlvWpSbulJd9kaD+qt+vbT0FGO3QklNZuhQ+uRLanCqBJFMu2RkjYtw9VfSVrh5yvMfNUMJYLoJJLGm2EMj+Rn44xWGa3GdhxFkU2WG0WKRDM8iCKPslpin1wxQUD5oBlSXvk0onyEH5EVe5TT
 CnHJdprf9yU/6R3OvyTieouyJQf+QHZkB3unK/ki0toK46adbEehivB0fSfEI5uT6p/sUV7TaOB2RaYnzQiWyleQWPkJZfYPyWrhfMqXPBrVkoOcCFovc2Jf8g60HkdMiWsmyILujk6IoO6XnKHYY/q4+OO9XSwXIQTIOJb1jkq4EEYpYbOaJG0EOYiSskWV1HpHTJzyOi3iLWG/Tu3oS2e0Sag7MZ6th46tnKjkeDSp00ymTu2k5tGUBlFKOhM85tcBlB/RJK+2sZrEyqNpbDNjJJFQoIVzaSqIZSeWNAXRPJrRm7thmmvXokWaPFDPPXpPb26Fmzs9p+3AP2v8Z3UqpoO9MJ2eDshKfJp2uUnRun56hn8m8UPWAiqRLTbDlMVDtn4H5eVjS47CawNs957zK+h99kTIpIH4G/AeL9UpBUyFmFVQC9201rUsy9RqVotUZOq7IU0rX9ZpAk05Dn1jX8Y4/q+ZGUtMCd/vxOnZEZeeufYlyDSH3GZdj+Z1arFdgM5sz+k0y/Z9nebYfqDTPNvzOh1ha+t0lO2HOi2w/UinY2wvaEGT7jsEchGBXMAGEoGwdRAI20sIhK1CIGwXEQjbIgJhu4RA2H6MQNguIxC2l7Wsmn4qaRw7E8sARYgDoznuyGVuKldTyaUSrotGpzbkKXKrpKJ4Vv0rA/3ikTesgbVAukTW/IpJrnxUleOPrmh508S5Ao5Vf3tzXJ8TD2W/WPhT8L/amqqkV6x5ZHIVeSPQk+NE1yYVj67p8rmqR9f/i4oOa4F+A6UQC0VZlg2+mZDwUafTUA1c5RAzGzMP1/W6Zc3P4fybGCEL6H78NxQaC9yDTllJWe1gr9XXj2W5twflsCdYkmK+zOtb4YuMzEr7RWYpez7yecAVMCqVYasNXK3gzXsS85DpTfJMELcVZYOkjceZILGBYx4wb76TICRMXbWB2imcsIG8YMwp2O+EQ1RvlOVwe6F9Ho2Uf2tX7MgZFU0Q+
 G32Rtjrs1DyW6yBhCe/1NdAVSFNxbipgEsj5YZq8GFcrdtGMk6gr6jYDcuyig8fR9x3So5lIPlIEatHRz+tvUKd1Ln9yihu3zv9CIJBaWL+9r6Z4qCUd7WSZVZtA1O3GpVT15rDxasO3c2j7nvH2Sdy1jTddE/c9L6mVbeDg7lZEO3bHJSlTC6o68MOG6jLzaXQ6mVckt52DzAsMKDfoRUb/1f3cfg8V6oKo+NIvZ2oH6PPYgzyDzh/R/UF6OcxTLmGlOd7lxOfbtzD2TJdxV2sn+LfwKy15mbpGnBD0w2Yh6xaHbrKDXynBjo90tyO9BDwse4K8QBgE8Bi8InuWsbzKYDxfMYcH+Bz5jBoMofBFnMYbDNnDWCHOQx2mcNgjzkMvmDOOsCXzGEQModBxBwGT5gTADxlDoOvmMPga+Yw+IY59wG+ZQ6DmDkMEuYw2Nd0ayhzixd0F6htUBXowPQTFvewONRUGbK/44Vhf28Qs38wiKk/aro9pP7EC0P92SCm/mIQU3/VdGdI/Y0Xhvq7QUz9wyCmPtMvxnKZwV9GvkuFA8ouNp/z98T7B8IaQLYAAQAB//8AD3iclVZvbBTHFZ+Z3dtd753Pt3d7u8Z/ljvfnzXn852529sztjkbG3x2aoyLXVQgMYgYh9iIRsQFCpiiQiMgyG6QhSrgQ4gQIBqqEJqi/hGWWqiqikpEVCTf+qGtStIKPjRqRBWv+2bvbF8qEVLdaWbezJud99785vceYufn5m8w2xgnIohDPhRA5R1irSqJDoYgtrEhktWzkkNyGAnsZjSSw1nZjesSMEhpGO+cnn5o/QXf3njq8ukBMnTi2hubDu393aPf7+EO/vqzXx75V77nV9aH0zg5MHhqiAxMvTMFSqcGv3tnYuLOp7RBiEFo/injg/Mr0HKUROKteKja52SYxgbsl7lQsC66GhtmOphSfJIRBZnjJVnJBlOmTyqsZyTDBFkhx0TBahJEUcD3BTFvRK
 ymiIHNML4fMXqGu6ymruHhLny/czueCVOtMC+K1jxdtVVNbOB/LyoN4+3IsRgbAUmoCjWgZlTR4cok9eWVssfJEQcYKXN1CWymFNWIurFGzOzSRILUuYnG5JjSmJHWjQc2kk0Tm7qPvHeUHP7Zwd7Ljy+Ta59e624ZfmPqxIttpHn78TM/2GH2lgQSD7cODe0bGmrdfIQc/PkB7vi39l29+s+rV/f1Ht/eTPWPD7exxujh9aWhLYltGBloLcR2TXNTfZVQjG2xoQEOFaLcijO0SSm1OJ1S/OrXCPgdiKMg3qHxXBw+L/SL2rx4lw7visLTr7gGxMzPz48xF5lyFEJxtA78WJ2M6Yt+6CG7qYtmM9DomRI/VH/avgjMaTiH6V0lMReiV8FqRJV5VSGtIj/p4sK8C0/yInZxk7ZdVOiZuXeWnfrTaVwXa5NnRw4NnNnVQdp2T106/Vozs27WD77Yu1xYFAq7Jqk3k+KyV86Qs3/4MXfaOlcb88+uy4396J2pPS1s5+jZ9YdGZv0IlfpUgSrRSvBpRbWyhHs9WPCE4v659lu3bctx59e1uYD955qJAT+fs0lyGGUQd7PeiSncK0iIh6C6sR7KpDMhPqRDl87oGYg+/LJpFWYzRQ01vRwrKpt8++5k6JLuVojXczO8ZTzj9ebHx/Neb2Z8S/imPa1fCk3efasCt3hD3vAdjhOI99Gkd9zLuvPlDugnH3np5N2QN+hbiN8NiJ8TWKsc5SF+7UGnQBCNXzQDiFAimZDMA1/5ZTfhOd6NZQWs4ktJJWUaUT2qJ5jsAmgorG3wYxSbHiNXp1ds2NXb1Ldvtar5PXWRWCcucEznimidR6mtbN/b34QDytsA9TUR46ISwDu3TmTiw6cyE1s9w6/n6wc6Y6ym+mKtsZReYB09FWuJe1WNiXds1PNKIGO/lEyg4NPn7H7yW+RBQWSCTyujNX4XS30qkImskVSOREBowBp2Y7iJHAF2IYCXBAP
 DYEoj5Fiib2xirC9R7PC78f6xVR939ZMX1n3csmsg1gtMk7cGe4A7SNuLJ7rxdTrEwy1Le6BroWJ65qczaSr0AsOQ5h1Hzx4dMShD0TsgNj4OgL0yiiDhg1q/myWNDZKRI4BbjSmYRRypHFOkQnpw4TT74IINjESNIom+3a/t6UmxsYFRPFzCa/TUB1/2CM6m2LzGSIwPAQJu8gSwWYY5m5pUrMgMO1dd7vWWk7+V4/XWCC9WMKbbJcBILuy9wWyxcw5308lQXBepTZcKb47ZLHu+eFIhY8XNSBUK+fsXj90KjL3QojKbVx8t5qx2tAFtQ99B30fTSO2Q3zx2+PXxl7cO9XW1phvCNT4nWwZ5FHDHF+lJBXxJRc6icpbi7X/WF7hZLzIZfoY+xfFX6dN1qu9b5PriuhZQ3lc1wO77SqBkiHcuCqpmXXjWCh5d2lii9eWFko+f262A6N8Nn9EwN047dZxqWH8sWSHhcapPG+ve/6uEhcV5wAcLdzQGd7QRcnclqobMDXVNY6B6mVzO07rGEZQKGQOefhRgyqn+YpJL6w4AA28TcBERlBV4v7IcbPfj6/izT+DUh1NAvPttMsUneXH6yhUa0rlPwBTrQ9t3sg3UXMJfPcoGPKqpjy6GbZq2Cdh668pj66SttjngJ4/t0S0elI1K5LBt38wM2nVHECVQP607eo1YuNbvcfK07sga0ToOyo0I9FB3YDOJE5gm6wrMKYBgkynkbtkWfBLNkbZHdg9+S0Y7zjEaBoJ+CIRE6nNRkou11ZN4c6KmnpFdc/MumalnFA/5piQf9Tit806Px4l3Oj1/zoMetgZhG867VzlGLvzm3CjbUv4TLWZ/oKbYP/2o3OMp/8hTVYVHYa/i8Vj7rPd6amOx2p5Ciwfac3PxzgAJ5xJzqxY45bDN6wJqBE6J+ThCKP9FqS8pWl7x1Ef4Qy6MtmOdh4Roj0z4Z3OUvJlwIB6A/+SmHY0dTiw8ZGnYmeSF
 85jlHWHI+FzZAzP+6u0zvIt8W6GqgVtv3ns5bj4o4yaJAy7q/IUkdoSdzocCdnY07hpwUduAn19lvICpCqinhA8aq5wM2OYo5utsMV8zshum1FA6wWaNHIYwk4yhq7rGMl4XN+e1MUMe8+JUTdxojtVECE7396UCuCZWY1bFqZzq72+q276Uqkl3vMeMx8NmtZlXE53dO0yQlQZ/farW6MXYnkKQCSmveRd5qRV1oVeQ1OHe1tfRZq5ssAtrrkB2lAsoWdpV0nNknxSUZA2Db1CDpCFhhjjeYfPJImsuFpBwAZRults5VLMrQruZXhrCw1mov3sslyAQfJ8IgnXyP9Ws4wbH4n+IglmsIDNU7129LA5EEhf064KIb1mzdom/hrbPGFsjRJp74pJFUSY71zgwdgzCiXNPEms7E8RnG/GSvwZr8kviAuYKXOFBK+BeKyUBUczBo5d5QvEV1Y0sNrH9WjgecpquaiSdyuZY5od6G172i2+YXfkRqFxHglZceSGJycz31o51alj1BQKiKrjDseYWZqOhh1ZaF9eld3X3JHGXNjcbyznr989gY8veTsmteOWIEVC4/wL3pcr0AAAAeJxjYGRgYABi1myG0nh+m68M3MwvgCIMlzauNoPQjWz///7PZKlgDgZyORiYQKIAPbEMK3icY2BkYGAO+p/FEMVSxsDw/ztLBQNQBAWIAAB9bwUbeJxjfsHAwBwJxIJI9AIIZtGH0mUQDFfzAoojoWoFoRgoBgBuswk0AAAAAAAAQACOAO4BUgG8Ag4CXALGAx4DXAN6A5oEbATKBUgFlgXmBoIGygAAAAEAAAAUAJAACQAAAAAAAgAAABAAcwAAACgLcAAAAAB4nH2QzUrDQBSFT2pb0YKggisXs9KKNP0Bu+iqUKjgThfFbUzzMyWdqZNpoSvXPoV7X0F8FZ/Fk3QQK9iESb577pmZey+AE3zBw+a54dqwhyNGG65gHyPHe9TvHFfJj45ra
 CB2XKf+7PgQ13hx3MAp3nmCVz1gNMOnYw/n3qXjCo68keM96veOq+S54xrOvFfHdepvjg8x8T4cN3BROR7pxdrIJLWiOboSvU63L57WQlOSKshEsLSpNrkYilgrG2WZ9kM9VzKWLRlq1SrUhyhZZoHZFrejSWRyqZXo+p3txG2kIhPYaFrcmq+SnrWxiI2ei7G7TyyMnkWh9VNrF4N2+3cdHLnGAmsYSCRIYSHQpHrFfw8ddNEnPdEh6Ny4JBQCZFQCLLkjLTM54yFXzEhRjejIyD5CfufUJHMSLa6w9LR+vA90Jzwr44lmp3NXbsJTijpkGQvW7rODXTtuuUOVu4Ky4ulPrzlWrKhH1dJddGXKLgTGf/oTnF+Rm1EJqfvlFC3VAdp8/5nHN7idlZwAeJxtjUkOwjAQBN0hIRtLgHzDB57kwGQBJzb2WCi8HgTigERduqQ6tIjEh0L8pxYCERaIkWCJFBlyFCixwhobbFFhhz0OqNOTGa3yfjcOU/DS34JydJZKc9YErT3NVFn9W9KHMaMcpuy9JnDZDl3P5OSFOFF35c4Fm67TJE3b5l+dYqvVHHs2NuI+eb0yLZrgl86crsRxOzgq2SnfSxotz2njwsuPQjwBTF473nicY/DewXAiKGIjI2Nf5AbGnRwMHAzJBRsZWJ02MjBoQWgOFHonAwMDJzKLmcFlowpjR2DEBoeOiI3MKS4b1UC8XRwNDIwsDh3JIREgJZFAsJGBR2sH4//WDSy9G5kYXAAH0yK4AAAA') format('woff'),
+       url('data:application/octet-stream;base64,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') format('truetype');
 }
 /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
 /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
@@ -17,7 +17,7 @@
 @media screen and (-webkit-min-device-pixel-ratio:0) {
   @font-face {
     font-family: 'nifi-icon-font';
-    src: url('../font/nifi-icon-font.svg?54105150#nifi-icon-font') format('svg');
+    src: url('../font/nifi-icon-font.svg?67554557#nifi-icon-font') format('svg');
   }
 }
 */
@@ -69,4 +69,5 @@
 .icon-bus:before { content: '\e80e'; } /* '' */
 .icon-rocket:before { content: '\e80f'; } /* '' */
 .icon-fire:before { content: '\e810'; } /* '' */
+.icon-trash-empty:before { content: '\e811'; } /* '' */
 .icon-brush-1:before { content: '\e812'; } /* '' */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/852622c9/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7-codes.css
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7-codes.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7-codes.css
index 4b6063d..c564c1f 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7-codes.css
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7-codes.css
@@ -16,4 +16,5 @@
 .icon-bus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80e;&nbsp;'); }
 .icon-rocket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80f;&nbsp;'); }
 .icon-fire { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe810;&nbsp;'); }
+.icon-trash-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe811;&nbsp;'); }
 .icon-brush-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe812;&nbsp;'); }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/852622c9/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7.css
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7.css
index 6fb8344..96b2e72 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7.css
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7.css
@@ -27,4 +27,5 @@
 .icon-bus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80e;&nbsp;'); }
 .icon-rocket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80f;&nbsp;'); }
 .icon-fire { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe810;&nbsp;'); }
+.icon-trash-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe811;&nbsp;'); }
 .icon-brush-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe812;&nbsp;'); }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/852622c9/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font.css
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font.css
index f347464..a41615f 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font.css
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font.css
@@ -1,10 +1,10 @@
 @font-face {
   font-family: 'nifi-icon-font';
-  src: url('../font/nifi-icon-font.eot?69740385');
-  src: url('../font/nifi-icon-font.eot?69740385#iefix') format('embedded-opentype'),
-       url('../font/nifi-icon-font.woff?69740385') format('woff'),
-       url('../font/nifi-icon-font.ttf?69740385') format('truetype'),
-       url('../font/nifi-icon-font.svg?69740385#nifi-icon-font') format('svg');
+  src: url('../font/nifi-icon-font.eot?83995960');
+  src: url('../font/nifi-icon-font.eot?83995960#iefix') format('embedded-opentype'),
+       url('../font/nifi-icon-font.woff?83995960') format('woff'),
+       url('../font/nifi-icon-font.ttf?83995960') format('truetype'),
+       url('../font/nifi-icon-font.svg?83995960#nifi-icon-font') format('svg');
   font-weight: normal;
   font-style: normal;
 }
@@ -14,7 +14,7 @@
 @media screen and (-webkit-min-device-pixel-ratio:0) {
   @font-face {
     font-family: 'nifi-icon-font';
-    src: url('../font/nifi-icon-font.svg?69740385#nifi-icon-font') format('svg');
+    src: url('../font/nifi-icon-font.svg?83995960#nifi-icon-font') format('svg');
   }
 }
 */
@@ -71,4 +71,5 @@
 .icon-bus:before { content: '\e80e'; } /* '' */
 .icon-rocket:before { content: '\e80f'; } /* '' */
 .icon-fire:before { content: '\e810'; } /* '' */
+.icon-trash-empty:before { content: '\e811'; } /* '' */
 .icon-brush-1:before { content: '\e812'; } /* '' */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/852622c9/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/demo.html
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/demo.html b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/demo.html
index c52bd01..5199938 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/demo.html
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/demo.html
@@ -229,11 +229,11 @@ body {
 }
 @font-face {
       font-family: 'nifi-icon-font';
-      src: url('./font/nifi-icon-font.eot?83682963');
-      src: url('./font/nifi-icon-font.eot?83682963#iefix') format('embedded-opentype'),
-           url('./font/nifi-icon-font.woff?83682963') format('woff'),
-           url('./font/nifi-icon-font.ttf?83682963') format('truetype'),
-           url('./font/nifi-icon-font.svg?83682963#nifi-icon-font') format('svg');
+      src: url('./font/nifi-icon-font.eot?28189329');
+      src: url('./font/nifi-icon-font.eot?28189329#iefix') format('embedded-opentype'),
+           url('./font/nifi-icon-font.woff?28189329') format('woff'),
+           url('./font/nifi-icon-font.ttf?28189329') format('truetype'),
+           url('./font/nifi-icon-font.svg?28189329#nifi-icon-font') format('svg');
       font-weight: normal;
       font-style: normal;
     }
@@ -326,6 +326,7 @@ body {
       </div>
       <div class="row">
         <div title="Code: 0xe810" class="the-icons span3"><i class="demo-icon icon-fire">&#xe810;</i> <span class="i-name">icon-fire</span><span class="i-code">0xe810</span></div>
+        <div title="Code: 0xe811" class="the-icons span3"><i class="demo-icon icon-trash-empty">&#xe811;</i> <span class="i-name">icon-trash-empty</span><span class="i-code">0xe811</span></div>
         <div title="Code: 0xe812" class="the-icons span3"><i class="demo-icon icon-brush-1">&#xe812;</i> <span class="i-name">icon-brush-1</span><span class="i-code">0xe812</span></div>
       </div>
     </div>

http://git-wip-us.apache.org/repos/asf/nifi/blob/852622c9/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.eot
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.eot b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.eot
index 520e333..f9528bb 100644
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.eot and b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.eot differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/852622c9/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.svg
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.svg b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.svg
index 958b792..3cc120c 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.svg
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.svg
@@ -23,6 +23,7 @@
 <glyph glyph-name="bus" unicode="&#xe80e;" d="m214 171q0 30-21 51t-50 21-51-21-21-51 21-50 51-21 50 21 21 50z m572 0q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m-26 221l-40 215q-3 13-13 21t-22 8h-513q-12 0-22-8t-13-21l-40-215q-3-16 8-29t27-13h593q17 0 27 13t8 29z m-126 342q0 11-8 19t-19 8h-357q-11 0-19-8t-8-19 8-19 19-8h357q11 0 19 8t8 19z m223-405v-336h-71v-72q0-29-21-50t-51-21-50 21-21 50v72h-429v-72q0-29-21-50t-50-21-51 21-21 50v72h-71v336q0 63 14 125l57 253q5 44 55 77t128 49 175 17 174-17 128-49 55-77l58-253q13-57 13-125z" horiz-adv-x="857.1" />
 <glyph glyph-name="rocket" unicode="&#xe80f;" d="m804 600q0 22-16 38t-38 16-38-16-16-38 16-38 38-16 38 16 16 38z m125 161q0-139-43-241t-141-201q-45-44-109-98l-11-211q-1-9-9-15l-214-125q-4-2-9-2-7 0-13 5l-36 36q-7 7-4 17l47 155-156 156-155-47q-1-1-5-1-7 0-12 5l-36 36q-10 11-3 22l125 214q6 8 15 9l211 11q54 64 98 109 105 104 200 144t241 40q7 0 13-6t6-12z" horiz-adv-x="928.6" />
 <glyph glyph-name="fire" unicode="&#xe810;" d="m786-96v-36q0-7-6-13t-12-5h-750q-7 0-13 5t-5 13v36q0 7 5 12t13 5h750q7 0 12-5t6-12z m-143 589q0-44-14-80t-36-63-48-49-54-44-49-40-35-45-14-54q0-54 37-125l-2 0 1 0q-51 23-90 46t-77 56-63 68-41 84-15 103q0 44 14 80t35 63 49 49 54 43 48 41 36 45 14 54q0 52-37 125l2-1-1 1q50-23 89-46t78-56 63-68 41-84 15-103z" horiz-adv-x="785.7" />
+<glyph glyph-name="trash-empty" unicode="&#xe811;" d="m286 439v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m143 0v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m142 0v-321q0-8-5-13t-12-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q7 0 12-5t5-13z m72-404v529h-500v-529q0-12 4-22t8-15 6-5h464q2 0 6 5t8 15 4 22z m-375 601h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q22 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" />
 <glyph glyph-name="brush-1" unicode="&#xe812;" d="m901 850q39 0 69-26t29-65q0-35-25-84-185-351-260-420-54-51-121-51-71 0-121 52t-51 122q0 72 52 119l356 323q33 30 72 30z m-507-577q22-42 59-73t84-42l1-40q2-119-72-193t-195-75q-68 0-121 26t-86 71-48 102-16 123q4-3 23-17t35-25 32-20 26-9q23 0 31 20 14 37 32 63t39 42 49 27 57 14 70 6z" horiz-adv-x="1000" />
 </font>
 </defs>

http://git-wip-us.apache.org/repos/asf/nifi/blob/852622c9/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.ttf
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.ttf b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.ttf
index 8f0def4..00b5a4a 100644
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.ttf and b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.ttf differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/852622c9/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.woff
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.woff b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.woff
index 39ccab3..f20af96 100644
Binary files a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.woff and b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.woff differ

http://git-wip-us.apache.org/repos/asf/nifi/blob/852622c9/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-toolbar.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-toolbar.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-toolbar.js
index e1aec7f..a0fb0cf 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-toolbar.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-toolbar.js
@@ -59,6 +59,7 @@ nf.CanvasToolbar = (function () {
             var paste = $('#operate-paste');
             var group = $('#operate-group');
             var color = $('#operate-color');
+            var del = $('#operate-delete');
 
             // initialize the buttons
             initializeButton(disable, 'disable');
@@ -70,6 +71,7 @@ nf.CanvasToolbar = (function () {
             initializeButton(paste, 'paste');
             initializeButton(group, 'group');
             initializeButton(color, 'fillColor');
+            initializeButton(del, 'delete');
 
             // set up initial states for selection-less items
             if (nf.Common.isDFM()) {
@@ -89,6 +91,7 @@ nf.CanvasToolbar = (function () {
             disableButton(paste);
             disableButton(color);
             disableButton(group);
+            disableButton(del);
 
             // add a clipboard listener if appropriate
             if (nf.Common.isDFM()) {
@@ -113,26 +116,27 @@ nf.CanvasToolbar = (function () {
                 var copy = $('#operate-copy');
                 var group = $('#operate-group');
                 var color = $('#operate-color');
+                var del = $('#operate-delete');
 
                 var selection = nf.CanvasUtils.getSelection();
 
                 // if all selected components are deletable enable the delete button
-                //if (!selection.empty()) {
-                //    var enableDelete = true;
-                //    selection.each(function (d) {
-                //        if (!nf.CanvasUtils.isDeletable(d3.select(this))) {
-                //            enableDelete = false;
-                //            return false;
-                //        }
-                //    });
-                //    if (enableDelete) {
-                //        actions['delete'].enable();
-                //    } else {
-                //        actions['delete'].disable();
-                //    }
-                //} else {
-                //    actions['delete'].disable();
-                //}
+                if (!selection.empty()) {
+                    var enableDelete = true;
+                    selection.each(function (d) {
+                        if (!nf.CanvasUtils.isDeletable(d3.select(this))) {
+                            enableDelete = false;
+                            return false;
+                        }
+                    });
+                    if (enableDelete) {
+                        enableButton(del);
+                    } else {
+                        disableButton(del);
+                    }
+                } else {
+                    disableButton(del);
+                }
 
                 // if there are any copyable components enable the button
                 if (nf.CanvasUtils.isCopyable(selection)) {


[4/4] nifi git commit: NIFI-1323 - Temp commit

Posted by mc...@apache.org.
NIFI-1323
- Temp commit


Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/8c3f88f5
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/8c3f88f5
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/8c3f88f5

Branch: refs/heads/NIFI-1323
Commit: 8c3f88f53f8f2e4d22a2b38eeb414801f4dc2baf
Parents: 852622c
Author: Matt Gilman <ma...@gmail.com>
Authored: Fri Mar 11 09:12:55 2016 -0500
Committer: Matt Gilman <ma...@gmail.com>
Committed: Fri Mar 11 09:12:55 2016 -0500

----------------------------------------------------------------------
 .../main/webapp/WEB-INF/pages/fresh-face.jsp    |  50 +++++++++
 .../src/main/webapp/css/fresh-face.css          | 106 +++++++++++++++++++
 2 files changed, 156 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/8c3f88f5/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/fresh-face.jsp
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/fresh-face.jsp b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/fresh-face.jsp
new file mode 100644
index 0000000..84f4add
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/fresh-face.jsp
@@ -0,0 +1,50 @@
+<%--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+--%>
+<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %>
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>NiFi</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="shortcut icon" href="images/nifi16.ico"/>
+        <link rel="stylesheet" href="css/reset.css" type="text/css" />
+        <link rel="stylesheet" href="css/fresh-face.css" type="text/css" />
+    </head>
+    <body>
+        <div id="toolbar-container">
+            <div id="logo">logo</div>
+            <div id="toolbox">toolbox</div>
+            <div id="global-administer">administer</div>
+            <div class="clear"></div>
+        </div>
+        <div id="navigation-container">
+            <div id="flow-status">flow status</div>
+            <div id="search">
+                <input id="search-field" placeholder="Search" />
+            </div>
+            <div id="controller-bulletins">&dotsquare;</div>
+            <div class="clear"></div>
+        </div>
+        <div id="breadcrumbs-container">
+            <div id="breadcrumbs">breadcrumbs</div>
+        </div>
+        <div id="action-panels">
+            <div id="navigate-panel" class="action-panel">N</div>
+            <div id="act-panel" class="action-panel">A</div>
+        </div>
+    </body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/8c3f88f5/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/fresh-face.css
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/fresh-face.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/fresh-face.css
new file mode 100644
index 0000000..ca282e9
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/fresh-face.css
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#toolbar-container {
+    background-color: #a9bac4;
+}
+
+#logo {
+    width: 200px;
+    height: 50px;
+    float: left;
+    border: 1px solid #000;
+}
+
+#toolbox {
+    width: 400px;
+    height: 56px;
+    float: left;
+    border: 1px solid #000;
+}
+
+#global-administer {
+    width: 400px;
+    height: 50px;
+    border: 1px solid #000;
+}
+
+@media (max-width: 1006px) {
+    #global-administer {
+        float: left;
+        clear: left;
+    }
+}
+
+@media (min-width: 1006px) {
+    #global-administer {
+        float: right;
+    }
+}
+
+#navigation-container {
+}
+
+#flow-status {
+    height: 30px;
+    border: 1px solid #000;
+    position: absolute;
+    padding-left: 10px;
+    padding-right: 10px;
+    left: 0;
+    right: 140px;
+}
+
+#controller-bulletins {
+    height: 30px;
+    border: 1px solid #000;
+    float: right;
+}
+
+#search {
+    height: 30px;
+    border: 1px solid #000;
+    float: right;
+}
+
+#breadcrumbs-container {
+
+}
+
+#breadcrumbs {
+    border: 1px solid #000;
+    height: 30px;
+}
+
+#action-panels {
+    position: absolute;
+    top: 50%;
+    bottom: 50%;
+    left: 0;
+}
+
+div.action-panel {
+    width: 25px;
+    height: 25px;
+    border: 1px solid #000;
+    line-height: 25px;
+    margin-bottom: 5px;
+}
+
+.clear {
+    clear: both;
+}
\ No newline at end of file


[2/4] nifi git commit: NIFI-1323: - Creating graph control panels for navigating and operating. - Remove controls from the header into the graph control panels where appropriate. - Removing unneeded styles and images.

Posted by mc...@apache.org.
NIFI-1323:
- Creating graph control panels for navigating and operating.
- Remove controls from the header into the graph control panels where appropriate.
- Removing unneeded styles and images.


Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/6b571081
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/6b571081
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/6b571081

Branch: refs/heads/NIFI-1323
Commit: 6b571081409f91a15638c3098a351fe672ea1886
Parents: c45060f
Author: Matt Gilman <ma...@gmail.com>
Authored: Mon Jan 4 17:05:02 2016 -0500
Committer: Matt Gilman <ma...@gmail.com>
Committed: Mon Jan 4 17:05:02 2016 -0500

----------------------------------------------------------------------
 .../nifi-framework/nifi-web/nifi-web-ui/pom.xml |   1 -
 .../main/resources/filters/canvas.properties    |   1 -
 .../src/main/webapp/WEB-INF/pages/canvas.jsp    |   1 +
 .../WEB-INF/partials/canvas/canvas-header.jsp   |   1 -
 .../WEB-INF/partials/canvas/navigation.jsp      | 130 ++++++--
 .../nifi-web-ui/src/main/webapp/css/header.css  | 151 ---------
 .../nifi-web-ui/src/main/webapp/css/main.css    |   4 +
 .../src/main/webapp/css/navigation.css          | 228 ++++---------
 .../src/main/webapp/icon-font/LICENSE.txt       |  12 +
 .../src/main/webapp/icon-font/README.txt        |  75 +++++
 .../src/main/webapp/icon-font/config.json       | 118 +++++++
 .../src/main/webapp/icon-font/css/animation.css |  85 +++++
 .../icon-font/css/nifi-icon-font-codes.css      |  19 ++
 .../icon-font/css/nifi-icon-font-embedded.css   |  72 ++++
 .../icon-font/css/nifi-icon-font-ie7-codes.css  |  19 ++
 .../webapp/icon-font/css/nifi-icon-font-ie7.css |  30 ++
 .../webapp/icon-font/css/nifi-icon-font.css     |  74 ++++
 .../src/main/webapp/icon-font/demo.html         | 334 +++++++++++++++++++
 .../webapp/icon-font/font/nifi-icon-font.eot    | Bin 0 -> 8352 bytes
 .../webapp/icon-font/font/nifi-icon-font.svg    |  29 ++
 .../webapp/icon-font/font/nifi-icon-font.ttf    | Bin 0 -> 8160 bytes
 .../webapp/icon-font/font/nifi-icon-font.woff   | Bin 0 -> 4844 bytes
 .../src/main/webapp/images/bgOutline.png        | Bin 585 -> 0 bytes
 .../main/webapp/images/bgToolbarBtnBorder.png   | Bin 227 -> 0 bytes
 .../src/main/webapp/images/buttonColor.png      | Bin 1679 -> 0 bytes
 .../src/main/webapp/images/buttonCopy.png       | Bin 1166 -> 0 bytes
 .../src/main/webapp/images/buttonDelete.png     | Bin 1837 -> 0 bytes
 .../src/main/webapp/images/buttonDisable.png    | Bin 1737 -> 0 bytes
 .../src/main/webapp/images/buttonEnable.png     | Bin 1375 -> 0 bytes
 .../src/main/webapp/images/buttonGroup.png      | Bin 880 -> 0 bytes
 .../src/main/webapp/images/buttonOutline.png    | Bin 495 -> 0 bytes
 .../src/main/webapp/images/buttonPanDown.png    | Bin 554 -> 0 bytes
 .../src/main/webapp/images/buttonPanLeft.png    | Bin 588 -> 0 bytes
 .../src/main/webapp/images/buttonPanRight.png   | Bin 530 -> 0 bytes
 .../src/main/webapp/images/buttonPanUp.png      | Bin 551 -> 0 bytes
 .../src/main/webapp/images/buttonPaste.png      | Bin 1372 -> 0 bytes
 .../src/main/webapp/images/buttonRun.png        | Bin 1163 -> 0 bytes
 .../src/main/webapp/images/buttonStop.png       | Bin 869 -> 0 bytes
 .../src/main/webapp/images/buttonTemplate.png   | Bin 1290 -> 0 bytes
 .../src/main/webapp/images/buttonZoom100.png    | Bin 449 -> 0 bytes
 .../src/main/webapp/images/buttonZoomFit.png    | Bin 499 -> 0 bytes
 .../src/main/webapp/images/buttonZoomIn.png     | Bin 435 -> 0 bytes
 .../src/main/webapp/images/buttonZoomOut.png    | Bin 339 -> 0 bytes
 .../src/main/webapp/js/nf/canvas/nf-birdseye.js |  68 ++--
 .../webapp/js/nf/canvas/nf-canvas-toolbar.js    | 178 +++++-----
 .../src/main/webapp/js/nf/canvas/nf-canvas.js   |   3 +-
 .../webapp/js/nf/canvas/nf-graph-control.js     | 171 +++++++---
 .../webapp/js/nf/canvas/nf-toolbar-action.js    |  96 ------
 .../src/main/webapp/js/nf/nf-storage.js         |   2 +-
 49 files changed, 1280 insertions(+), 622 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
index 35ad4a2..f675e2a 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
@@ -308,7 +308,6 @@
                                                 <include>${staging.dir}/js/nf/canvas/nf-selectable.js</include>
                                                 <include>${staging.dir}/js/nf/canvas/nf-connectable.js</include>
                                                 <include>${staging.dir}/js/nf/canvas/nf-birdseye.js</include>
-                                                <include>${staging.dir}/js/nf/canvas/nf-toolbar-action.js</include>
                                                 <include>${staging.dir}/js/nf/canvas/nf-canvas-toolbar.js</include>
                                                 <include>${staging.dir}/js/nf/canvas/nf-graph-control.js</include>
                                                 <include>${staging.dir}/js/nf/canvas/nf-canvas-header.js</include>

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties
index bf61846..aaf6f47 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties
@@ -52,7 +52,6 @@ nf.canvas.script.tags=<script type="text/javascript" src="js/nf/nf-namespace.js?
 <script type="text/javascript" src="js/nf/canvas/nf-connectable.js?${project.version}"></script>\n\
 <script type="text/javascript" src="js/nf/canvas/nf-selectable.js?${project.version}"></script>\n\
 <script type="text/javascript" src="js/nf/canvas/nf-birdseye.js?${project.version}"></script>\n\
-<script type="text/javascript" src="js/nf/canvas/nf-toolbar-action.js?${project.version}"></script>\n\
 <script type="text/javascript" src="js/nf/canvas/nf-canvas-toolbar.js?${project.version}"></script>\n\
 <script type="text/javascript" src="js/nf/canvas/nf-graph-control.js?${project.version}"></script>\n\
 <script type="text/javascript" src="js/nf/canvas/nf-canvas-header.js?${project.version}"></script>\n\

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp
index f9970df..76b22be 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp
@@ -22,6 +22,7 @@
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
         <link rel="shortcut icon" href="images/nifi16.ico"/>
         <link rel="stylesheet" href="css/reset.css" type="text/css" />
+        <link rel="stylesheet" href="icon-font/css/nifi-icon-font.css" type="text/css" />
         ${nf.canvas.style.tags}
         <link rel="stylesheet" href="js/codemirror/lib/codemirror.css" type="text/css" />
         <link rel="stylesheet" href="js/codemirror/addon/hint/show-hint.css" type="text/css" />

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/canvas-header.jsp
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/canvas-header.jsp b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/canvas-header.jsp
index 7a1d22d..c868bca 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/canvas-header.jsp
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/canvas-header.jsp
@@ -23,7 +23,6 @@
         <div id="toolbox-right-edge"></div>
     </div>
     <div id="toolbar">
-        <div id="global-controls"></div>
         <div id="utilities-container">
             <div id="utilities-border"></div>
             <div id="utility-buttons">

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/navigation.jsp
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/navigation.jsp b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/navigation.jsp
index 325cf9d..714a0ed 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/navigation.jsp
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/navigation.jsp
@@ -24,34 +24,104 @@
     </div>
     <div id="breadcrumbs-background"></div>
 </div>
-<div id="pan-and-zoom">
-    <div id="graph-control-separator">&nbsp;</div>
-    <table class="pan">
-        <tr>
-            <td id="pan-top-left"></td>
-            <td id="pan-up-button" title="Pan Up" class="pan-up"></td>
-            <td id="pan-top-right"></td>
-        </tr>
-        <tr>
-            <td id="pan-left-button" title="Pan Left" class="pan-left"></td>
-            <td id="pan-center"></td>
-            <td id="pan-right-button" title="Pan Right" class="pan-right"></td>
-        </tr>
-        <tr>
-            <td id="pan-bottom-left"></td>
-            <td id="pan-down-button" title="Pan Down" class="pan-down"></td>
-            <td id="pan-bottom-right"></td>
-        </tr>
-    </table>
-    <div id="graph-control-separator">&nbsp;</div>
-    <div id="zoom-in-button" title="Zoom In" class="zoom-in"></div>
-    <div id="zoom-out-button" title="Zoom Out" class="zoom-out"></div>
-    <div id="graph-control-separator">&nbsp;</div>
-    <div id="zoom-fit-button" title="Fit" class="fit-image"></div>
-    <div id="graph-control-separator">&nbsp;</div>
-    <div id="zoom-actual-button" title="Actual Size" class="actual-size"></div>
+<div id="graph-controls">
+    <div id="navigation-control" class="graph-control">
+        <div class="graph-control-docked pointer" title="Navigate">
+            <i class="graph-control-icon nifi-icon icon-compass"></i>
+        </div>
+        <div class="graph-control-header-container hidden">
+            <div class="graph-control-header-icon">
+                <i class="graph-control-icon nifi-icon icon-compass"></i>
+            </div>
+            <div class="graph-control-header">NAVIGATE</div>
+            <div class="graph-control-header-action">
+                <i class="graph-control-expansion nifi-icon icon-plus-squared-alt pointer"></i>
+            </div>
+            <div class="clear"></div>
+        </div>
+        <div class="graph-control-content hidden">
+            <div id="navigation-buttons">
+                <div id="naviagte-zoom-in" class="action-button" title="Zoom In">
+                    <i class="graph-control-action-icon nifi-icon icon-zoom-in"></i>
+                </div>
+                <div class="button-spacer-small">&nbsp;</div>
+                <div id="naviagte-zoom-out" class="action-button" title="Zoom Out">
+                    <i class="graph-control-action-icon nifi-icon icon-zoom-out"></i>
+                </div>
+                <div class="button-spacer-large">&nbsp;</div>
+                <div id="naviagte-zoom-fit" class="action-button" title="Fit">
+                    <i class="graph-control-action-icon nifi-icon icon-fighter-jet"></i>
+                </div>
+                <div class="button-spacer-small">&nbsp;</div>
+                <div id="naviagte-zoom-actual-size" class="action-button" title="Actual">
+                    <i class="graph-control-action-icon nifi-icon icon-award"></i>
+                </div>
+                <div class="clear"></div>
+            </div>
+            <div id="birdseye"></div>
+        </div>
+    </div>
+    <div id="operation-control" class="graph-control">
+        <div class="graph-control-docked pointer" title="Operate">
+            <i class="graph-control-icon nifi-icon icon-bullseye"></i>
+        </div>
+        <div class="graph-control-header-container hidden">
+            <div class="graph-control-header-icon">
+                <i class="graph-control-icon nifi-icon icon-bullseye"></i>
+            </div>
+            <div class="graph-control-header">OPERATE</div>
+            <div class="graph-control-header-action">
+                <i class="graph-control-expansion nifi-icon icon-plus-squared-alt pointer"></i>
+            </div>
+            <div class="clear"></div>
+        </div>
+        <div class="graph-control-content hidden">
+            <div id="operation-buttons">
+                <div>
+                    <div id="operate-enable" class="action-button" title="Enable">
+                        <i class="graph-control-action-icon nifi-icon icon-toggle-on"></i>
+                    </div>
+                    <div class="button-spacer-small">&nbsp;</div>
+                    <div id="operate-disable" class="action-button" title="Disable">
+                        <i class="graph-control-action-icon nifi-icon icon-toggle-off"></i>
+                    </div>
+                    <div class="button-spacer-large">&nbsp;</div>
+                    <div id="operate-start" class="action-button" title="Start">
+                        <i class="graph-control-action-icon nifi-icon icon-play"></i>
+                    </div>
+                    <div class="button-spacer-small">&nbsp;</div>
+                    <div id="operate-stop" class="action-button" title="Stop">
+                        <i class="graph-control-action-icon nifi-icon icon-stop"></i>
+                    </div>
+                    <div class="button-spacer-large">&nbsp;</div>
+                    <div id="operate-template" class="action-button" title="Create Template">
+                        <i class="graph-control-action-icon nifi-icon icon-bus"></i>
+                    </div>
+                    <div class="button-spacer-large">&nbsp;</div>
+                    <div id="operate-copy" class="action-button" title="Copy">
+                        <i class="graph-control-action-icon nifi-icon icon-th"></i>
+                    </div>
+                    <div class="button-spacer-small">&nbsp;</div>
+                    <div id="operate-paste" class="action-button" title="Paste">
+                        <i class="graph-control-action-icon nifi-icon icon-paste"></i>
+                    </div>
+                    <div class="clear"></div>
+                </div>
+                <div style="margin-top: 5px;">
+                    <div id="operate-group" class="action-button" title="Group">
+                        <i class="graph-control-action-icon nifi-icon icon-fire"></i>
+                    </div>
+                    <div class="button-spacer-large">&nbsp;</div>
+                    <div id="operate-color" class="action-button" title="Fill Color">
+                        <i class="graph-control-action-icon nifi-icon icon-brush-1"></i>
+                    </div>
+                    <div class="clear"></div>
+                </div>
+            </div>
+        </div>
+    </div>
 </div>
-<div id="birdseye-collapse" class="birdseye-expanded"></div>
-<div id="birdseye-container">
-    <div id="birdseye"></div>
-</div>
\ No newline at end of file
+    <%--<div id="zoom-in-button" title="Zoom In" class="zoom-in"></div>--%>
+    <%--<div id="zoom-out-button" title="Zoom Out" class="zoom-out"></div>--%>
+    <%--<div id="zoom-fit-button" title="Fit" class="fit-image"></div>--%>
+    <%--<div id="zoom-actual-button" title="Actual Size" class="actual-size"></div>--%>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/header.css
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/header.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/header.css
index 200f6bb..8021b34 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/header.css
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/header.css
@@ -241,157 +241,6 @@ div.label-icon-drag {
     height: 28px;
 }
 
-/* global actions / controls */
-
-div.toolbar-icon {
-    float: left;
-    height: 26px;
-    width: 20px;
-}
-
-#global-controls-container {
-    float: left;
-}
-
-div.control-border {
-    float: left;
-    height: 26px;
-    width: 1px;
-    background: transparent url(../images/bgToolbarBtnBorder.png) no-repeat scroll top left;
-}
-
-div.control-separator {
-    float: left;
-    height: 26px;
-    width: 5px;
-}
-
-#global-controls {
-    float: left;
-    margin-top: 1px;
-    margin-left: 20px;
-}
-
-div.enable-all {
-    background: transparent url(../images/buttonEnable.png) no-repeat scroll top left;
-}
-
-div.enable-all-hover {
-    background: transparent url(../images/buttonEnable.png) no-repeat scroll top center;
-}
-
-div.enable-all-disable {
-    background: transparent url(../images/buttonEnable.png) no-repeat scroll top right;
-}
-
-div.disable-all {
-    background: transparent url(../images/buttonDisable.png) no-repeat scroll top left;
-}
-
-div.disable-all-hover {
-    background: transparent url(../images/buttonDisable.png) no-repeat scroll top center;
-}
-
-div.disable-all-disable {
-    background: transparent url(../images/buttonDisable.png) no-repeat scroll top right;
-}
-
-div.start-all {
-    background: transparent url(../images/buttonRun.png) no-repeat scroll top left;
-}
-
-div.start-all-hover {
-    background: transparent url(../images/buttonRun.png) no-repeat scroll top center;
-}
-
-div.start-all-disable {
-    background: transparent url(../images/buttonRun.png) no-repeat scroll top right;
-}
-
-div.stop-all {
-    background: transparent url(../images/buttonStop.png) no-repeat scroll top left;
-}
-
-div.stop-all-hover {
-    background: transparent url(../images/buttonStop.png) no-repeat scroll top center;
-}
-
-div.stop-all-disable {
-    background: transparent url(../images/buttonStop.png) no-repeat scroll top right;
-}
-
-div.copy {
-    background: transparent url(../images/buttonCopy.png) no-repeat scroll top left;
-}
-
-div.copy-hover {
-    background: transparent url(../images/buttonCopy.png) no-repeat scroll top center;
-}
-
-div.copy-disable {
-    background: transparent url(../images/buttonCopy.png) no-repeat scroll top right;
-}
-
-div.paste {
-    background: transparent url(../images/buttonPaste.png) no-repeat scroll top left;
-}
-
-div.paste-hover {
-    background: transparent url(../images/buttonPaste.png) no-repeat scroll top center;
-}
-
-div.paste-disable {
-    background: transparent url(../images/buttonPaste.png) no-repeat scroll top right;
-}
-
-div.fill {
-    background: transparent url(../images/buttonColor.png) no-repeat scroll top left;
-}
-
-div.fill-hover {
-    background: transparent url(../images/buttonColor.png) no-repeat scroll top center;
-}
-
-div.fill-disable {
-    background: transparent url(../images/buttonColor.png) no-repeat scroll top right;
-}
-
-div.group {
-    background: transparent url(../images/buttonGroup.png) no-repeat scroll top left;
-}
-
-div.group-hover {
-    background: transparent url(../images/buttonGroup.png) no-repeat scroll top center;
-}
-
-div.group-disable {
-    background: transparent url(../images/buttonGroup.png) no-repeat scroll top right;
-}
-
-div.delete {
-    background: transparent url(../images/buttonDelete.png) no-repeat scroll top left;
-}
-
-div.delete-hover {
-    background: transparent url(../images/buttonDelete.png) no-repeat scroll top center;
-}
-
-div.delete-disable {
-    background: transparent url(../images/buttonDelete.png) no-repeat scroll top right;
-}
-
-div.template {
-    background: transparent url(../images/buttonTemplate.png) no-repeat scroll top left;
-}
-
-div.template-hover {
-    background: transparent url(../images/buttonTemplate.png) no-repeat scroll top center;
-}
-
-div.template-disable {
-    background: transparent url(../images/buttonTemplate.png) no-repeat scroll top right;
-}
-
 /* search field */
 
 div.search-result-icon {

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/main.css
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/main.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/main.css
index 3a6e9d1..79043df 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/main.css
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/main.css
@@ -104,6 +104,10 @@ ul.links span.header-link-over {
     General Styles
 */
 
+i.nifi-icon {
+    color: #8ea8b2;
+}
+
 .unselectable {
     -webkit-touch-callout: none;
     -webkit-user-select: none;

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/navigation.css
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/navigation.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/navigation.css
index 4f53610..9eac8ae 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/navigation.css
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/navigation.css
@@ -14,132 +14,113 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-/* styles for the graph pan/zoom controls */
 
-#pan-and-zoom {
-    position: absolute;
-    top: 94px;
-    width: 59px;
-    height: 153px;
-    padding-right: 4px;
-    padding-bottom: 4px;
-    z-index: 1000;
-    background: transparent url(../images/bgPanZoom.png) no-repeat scroll top left;
-}
-
-table.pan {
-    float: left;
-    clear: left;
-    border-collapse: collapse;
-    padding: 0;
-    margin: 0;
-    margin-left: 6px;
-}
-
-#pan-up-button, #pan-down-button {
-    height: 12px;
-    width: 18px;
-    cursor: pointer;
-    z-index: inherit;
-}
-
-#pan-left-button, #pan-right-button {
-    width: 14px;
-    height: 16px;
-    cursor: pointer;
-    z-index: inherit;
-}
+/* general graph control styles */
 
-#pan-center {
-    width: 18px;
-    height: 16px;
-    background: transparent url(../images/bgPanCenter.png) no-repeat scroll center center;
+#graph-controls {
+    position: absolute;
+    left: 0;
+    z-index: 2;
 }
 
-#pan-top-right, #pan-top-left, #pan-bottom-right, #pan-bottom-left {
-    background-color: transparent;
+div.graph-control {
+    padding: 2px;
+    border: 1px solid #e5ebed;
+    margin-bottom: 5px;
+    background-color: #fff;
 }
 
-td.pan-up {
-    background: transparent url(../images/buttonPanUp.png) no-repeat scroll top left;
+div.graph-control i.graph-control-icon {
+    font-size: 20px;
 }
 
-td.pan-up-hover {
-    background: transparent url(../images/buttonPanUp.png) no-repeat scroll top right;
+div.graph-control i.graph-control-expansion {
+    font-size: 20px;
+    color: #035f8f;
 }
 
-td.pan-down {
-    background: transparent url(../images/buttonPanDown.png) no-repeat scroll top left;
+div.graph-control-header-icon {
+    float: left;
 }
 
-td.pan-down-hover {
-    background: transparent url(../images/buttonPanDown.png) no-repeat scroll top right;
+div.graph-control-header {
+    float: left;
+    font-size: 14px;
+    line-height: 22px;
+    color: #8ea8b2;
 }
 
-td.pan-left {
-    background: transparent url(../images/buttonPanLeft.png) no-repeat scroll top left;
+div.graph-control-header-action {
+    float: right;
 }
 
-td.pan-left-hover {
-    background: transparent url(../images/buttonPanLeft.png) no-repeat scroll top right;
+div.graph-control-content {
+    margin: 5px;
+    width: 250px;
 }
 
-td.pan-right {
-    background: transparent url(../images/buttonPanRight.png) no-repeat scroll top left;
-}
+/* navigate buttons */
 
-td.pan-right-hover {
-    background: transparent url(../images/buttonPanRight.png) no-repeat scroll top right;
+#navigation-buttons {
+    margin-bottom: 5px;
 }
 
-div.zoom-in {
-    background: transparent url(../images/buttonZoomIn.png) no-repeat scroll top left;
+div.action-button {
+    float: left;
+    border: 1px solid #8ea8b2;
+    cursor: pointer;
+    height: 24px;
+    width: 24px;
+    text-align: center;
 }
 
-div.zoom-in-hover {
-    background: transparent url(../images/buttonZoomIn.png) no-repeat scroll top right;
+div.graph-control i.graph-control-action-icon {
+    font-size: 16px;
+    color: #035f8f;
+    line-height: 24px;
 }
 
-div.zoom-out {
-    background: transparent url(../images/buttonZoomOut.png) no-repeat scroll top left;
+div.graph-control i.icon-disabled {
+    color: #ddd;
 }
 
-div.zoom-out-hover {
-    background: transparent url(../images/buttonZoomOut.png) no-repeat scroll top right;
+div.button-spacer-small {
+    float: left;
+    width: 2px;
 }
 
-div.fit-image {
-    background: transparent url(../images/buttonZoomFit.png) no-repeat scroll top left;
+div.button-spacer-large {
+    float: left;
+    width: 10px;
 }
 
-div.fit-image-hover {
-    background: transparent url(../images/buttonZoomFit.png) no-repeat scroll top right;
-}
+/* outline/birdseye */
 
-div.actual-size {
-    background: transparent url(../images/buttonZoom100.png) no-repeat scroll top left;
+#birdseye svg, #birdseye canvas {
+    position: absolute;
+    overflow: hidden;
+    top: 62px;
+    left: 8px;
 }
 
-div.actual-size-hover {
-    background: transparent url(../images/buttonZoom100.png) no-repeat scroll top right;
+#birdseye {
+    width: 248px;
+    height: 150px;
+    background: #fff;
+    z-index: 1001;
+    overflow: hidden;
+    border: 1px solid #e5ebed;
 }
 
-#zoom-in-button, #zoom-out-button, #zoom-fit-button, #zoom-actual-button {
-    float: left;
-    clear: left;
-    margin-left: 20px;
-    height: 16px;
-    width: 18px;
-    cursor: pointer;
-    z-index: inherit;
+.brush .extent {
+    stroke: #666;
+    fill-opacity: .125;
+    shape-rendering: crispEdges;
 }
 
-#graph-control-separator {
-    float: left;
-    clear: left;
-    height: 8px;
-    -webkit-user-select: none;
-    -moz-user-select: none;
+rect.birdseye-brush {
+    stroke: #7098ad;
+    fill: transparent;
 }
 
 /* styles for the breadcrumbs bar */
@@ -218,75 +199,4 @@ div.actual-size-hover {
     left: 10px;
     float: left;
     white-space: nowrap;
-}
-
-/* styles for the outline */
-
-#birdseye-container {
-    position: absolute;
-    top: 94px;
-    right: 0px;
-    width: 202px;
-    height: 117px;
-    background-image: url(../images/bgOutline.png);
-    background-color: transparent;
-    z-index: 1000;
-    overflow: hidden;
-}
-
-#birdseye-container svg, #birdseye-container canvas {
-    position: absolute;
-    overflow: hidden;
-    top: 1px;
-    left: 4px;
-    bottom: 0px;
-    right: 0px;
-}
-
-#birdseye {
-    margin-top: 1px;
-    margin-left: 4px;
-    width: 194px;
-    height: 108px;
-    background: #fff;
-    z-index: 1001;
-    overflow: hidden;
-    border: 1px solid #ccc;
-}
-
-#birdseye-collapse {
-    position: absolute;
-    top: 80px;
-    right: 5px;
-    width: 15px;
-    height: 10px;
-    z-index: 1010;
-    cursor: pointer;
-}
-
-div.birdseye-expanded {
-    background: transparent url(../images/buttonOutline.png) no-repeat scroll top left;
-}
-
-div.birdseye-expanded-hover {
-    background: transparent url(../images/buttonOutline.png) no-repeat scroll top right;
-}
-
-div.birdseye-collapsed {
-    background: transparent url(../images/buttonOutline.png) no-repeat scroll bottom left;
-}
-
-div.birdseye-collapsed-hover {
-    background: transparent url(../images/buttonOutline.png) no-repeat scroll bottom right;
-}
-
-.brush .extent {
-    stroke: #666;
-    fill-opacity: .125;
-    shape-rendering: crispEdges;
-}
-
-rect.birdseye-brush {
-    stroke: #7098ad;
-    fill: transparent;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/LICENSE.txt
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/LICENSE.txt b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/LICENSE.txt
new file mode 100644
index 0000000..b511054
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/LICENSE.txt
@@ -0,0 +1,12 @@
+Font license info
+
+
+## Font Awesome
+
+   Copyright (C) 2012 by Dave Gandy
+
+   Author:    Dave Gandy
+   License:   SIL ()
+   Homepage:  http://fortawesome.github.com/Font-Awesome/
+
+

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/README.txt
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/README.txt b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/README.txt
new file mode 100644
index 0000000..a91438a
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/README.txt
@@ -0,0 +1,75 @@
+This webfont is generated by http://fontello.com open source project.
+
+
+================================================================================
+Please, note, that you should obey original font licences, used to make this
+webfont pack. Details available in LICENSE.txt file.
+
+- Usually, it's enough to publish content of LICENSE.txt file somewhere on your
+  site in "About" section.
+
+- If your project is open-source, usually, it will be ok to make LICENSE.txt
+  file publically available in your repository.
+
+- Fonts, used in Fontello, don't require a clickable link on your site.
+  But any kind of additional authors crediting is welcome.
+================================================================================
+
+
+Comments on archive content
+---------------------------
+
+- /font/* - fonts in different formats
+
+- /css/*  - different kinds of css, for all situations. Should be ok with 
+  twitter bootstrap. Also, you can skip <i> style and assign icon classes
+  directly to text elements, if you don't mind about IE7.
+
+- demo.html - demo file, to show your webfont content
+
+- LICENSE.txt - license info about source fonts, used to build your one.
+
+- config.json - keeps your settings. You can import it back into fontello
+  anytime, to continue your work
+
+
+Why so many CSS files ?
+-----------------------
+
+Because we like to fit all your needs :)
+
+- basic file, <your_font_name>.css - is usually enough, it contains @font-face
+  and character code definitions
+
+- *-ie7.css - if you need IE7 support, but still don't wish to put char codes
+  directly into html
+
+- *-codes.css and *-ie7-codes.css - if you like to use your own @font-face
+  rules, but still wish to benefit from css generation. That can be very
+  convenient for automated asset build systems. When you need to update font -
+  no need to manually edit files, just override old version with archive
+  content. See fontello source code for examples.
+
+- *-embedded.css - basic css file, but with embedded WOFF font, to avoid
+  CORS issues in Firefox and IE9+, when fonts are hosted on the separate domain.
+  We strongly recommend to resolve this issue by `Access-Control-Allow-Origin`
+  server headers. But if you ok with dirty hack - this file is for you. Note,
+  that data url moved to separate @font-face to avoid problems with <IE9, when
+  string is too long.
+
+- animate.css - use it to get ideas about spinner rotation animation.
+
+
+Attention for server setup
+--------------------------
+
+You MUST setup server to reply with proper `mime-types` for font files -
+otherwise some browsers will fail to show fonts.
+
+Usually, `apache` already has necessary settings, but `nginx` and other
+webservers should be tuned. Here is list of mime types for our file extensions:
+
+- `application/vnd.ms-fontobject` - eot
+- `application/x-font-woff` - woff
+- `application/x-font-ttf` - ttf
+- `image/svg+xml` - svg

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/config.json
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/config.json b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/config.json
new file mode 100644
index 0000000..f92c00b
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/config.json
@@ -0,0 +1,118 @@
+{
+  "name": "nifi-icon-font",
+  "css_prefix_text": "icon-",
+  "css_use_suffix": false,
+  "hinting": true,
+  "units_per_em": 1000,
+  "ascent": 850,
+  "glyphs": [
+    {
+      "uid": "b1887b423d2fd15c345e090320c91ca0",
+      "css": "th",
+      "code": 59404,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "2d3be3e856fc1e4ac067590d2ded1b07",
+      "css": "plus-squared-alt",
+      "code": 59395,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "18ef25350258541e8e54148ed79845c0",
+      "css": "minus-squared-alt",
+      "code": 59393,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "e5d624264734620fa9f98d59e6dc941f",
+      "css": "compass",
+      "code": 59392,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "0b2b66e526028a6972d51a6f10281b4b",
+      "css": "zoom-in",
+      "code": 59396,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "d25d10efa900f529ad1d275657cfd30e",
+      "css": "zoom-out",
+      "code": 59397,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "ce06b5805120d0c2f8d60cd3f1a4fdb5",
+      "css": "play",
+      "code": 59402,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "b624a1e512819d410ddbee84e6918b9d",
+      "css": "stop",
+      "code": 59403,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "ab656e280958018a7859eba9a1eabbc7",
+      "css": "award",
+      "code": 59399,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "cb36cbe4e2dac9545e32c3d80a7c6e03",
+      "css": "fighter-jet",
+      "code": 59398,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "b429436ec5a518c78479d44ef18dbd60",
+      "css": "paste",
+      "code": 59405,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "2a4e6c99b732a57da40e32fa2a7800a4",
+      "css": "toggle-off",
+      "code": 59400,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "3256ef03b16e7ab51235bc7378b53bb5",
+      "css": "toggle-on",
+      "code": 59401,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "254077e7c0a9e6d303b32f9c35b96a40",
+      "css": "fire",
+      "code": 59408,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "8aa99bc60f3553bb3e31b73dd6e744c8",
+      "css": "rocket",
+      "code": 59407,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "5b17c7263caa553039655f2fef81ecaf",
+      "css": "bus",
+      "code": 59406,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "c92ad3028acce9d51bae0ac82f5de8a2",
+      "css": "bullseye",
+      "code": 59394,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "fa9a0b7e788c2d78e24cef1de6b70e80",
+      "css": "brush-1",
+      "code": 59410,
+      "src": "fontawesome"
+    }
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/animation.css
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/animation.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/animation.css
new file mode 100644
index 0000000..ac5a956
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/animation.css
@@ -0,0 +1,85 @@
+/*
+   Animation example, for spinners
+*/
+.animate-spin {
+  -moz-animation: spin 2s infinite linear;
+  -o-animation: spin 2s infinite linear;
+  -webkit-animation: spin 2s infinite linear;
+  animation: spin 2s infinite linear;
+  display: inline-block;
+}
+@-moz-keyframes spin {
+  0% {
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  100% {
+    -moz-transform: rotate(359deg);
+    -o-transform: rotate(359deg);
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
+@-webkit-keyframes spin {
+  0% {
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  100% {
+    -moz-transform: rotate(359deg);
+    -o-transform: rotate(359deg);
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
+@-o-keyframes spin {
+  0% {
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  100% {
+    -moz-transform: rotate(359deg);
+    -o-transform: rotate(359deg);
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
+@-ms-keyframes spin {
+  0% {
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  100% {
+    -moz-transform: rotate(359deg);
+    -o-transform: rotate(359deg);
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
+@keyframes spin {
+  0% {
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  100% {
+    -moz-transform: rotate(359deg);
+    -o-transform: rotate(359deg);
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-codes.css
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-codes.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-codes.css
new file mode 100644
index 0000000..382c656
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-codes.css
@@ -0,0 +1,19 @@
+
+.icon-compass:before { content: '\e800'; } /* '' */
+.icon-minus-squared-alt:before { content: '\e801'; } /* '' */
+.icon-bullseye:before { content: '\e802'; } /* '' */
+.icon-plus-squared-alt:before { content: '\e803'; } /* '' */
+.icon-zoom-in:before { content: '\e804'; } /* '' */
+.icon-zoom-out:before { content: '\e805'; } /* '' */
+.icon-fighter-jet:before { content: '\e806'; } /* '' */
+.icon-award:before { content: '\e807'; } /* '' */
+.icon-toggle-off:before { content: '\e808'; } /* '' */
+.icon-toggle-on:before { content: '\e809'; } /* '' */
+.icon-play:before { content: '\e80a'; } /* '' */
+.icon-stop:before { content: '\e80b'; } /* '' */
+.icon-th:before { content: '\e80c'; } /* '' */
+.icon-paste:before { content: '\e80d'; } /* '' */
+.icon-bus:before { content: '\e80e'; } /* '' */
+.icon-rocket:before { content: '\e80f'; } /* '' */
+.icon-fire:before { content: '\e810'; } /* '' */
+.icon-brush-1:before { content: '\e812'; } /* '' */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-embedded.css
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-embedded.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-embedded.css
new file mode 100644
index 0000000..fa8ce02
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-embedded.css
@@ -0,0 +1,72 @@
+@font-face {
+  font-family: 'nifi-icon-font';
+  src: url('../font/nifi-icon-font.eot?54105150');
+  src: url('../font/nifi-icon-font.eot?54105150#iefix') format('embedded-opentype'),
+       url('../font/nifi-icon-font.svg?54105150#nifi-icon-font') format('svg');
+  font-weight: normal;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'nifi-icon-font';
+  src: url('data:application/octet-stream;base64,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') format('woff'),
+       url('data:application/octet-stream;base64,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') format('truetype');
+}
+/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
+/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
+/*
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+  @font-face {
+    font-family: 'nifi-icon-font';
+    src: url('../font/nifi-icon-font.svg?54105150#nifi-icon-font') format('svg');
+  }
+}
+*/
+ 
+ [class^="icon-"]:before, [class*=" icon-"]:before {
+  font-family: "nifi-icon-font";
+  font-style: normal;
+  font-weight: normal;
+  speak: none;
+ 
+  display: inline-block;
+  text-decoration: inherit;
+  width: 1em;
+  margin-right: .2em;
+  text-align: center;
+  /* opacity: .8; */
+ 
+  /* For safety - reset parent styles, that can break glyph codes*/
+  font-variant: normal;
+  text-transform: none;
+     
+  /* fix buttons height, for twitter bootstrap */
+  line-height: 1em;
+ 
+  /* Animation center compensation - margins should be symmetric */
+  /* remove if not needed */
+  margin-left: .2em;
+ 
+  /* you can be more comfortable with increased icons size */
+  /* font-size: 120%; */
+ 
+  /* Uncomment for 3D effect */
+  /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
+}
+.icon-compass:before { content: '\e800'; } /* '' */
+.icon-minus-squared-alt:before { content: '\e801'; } /* '' */
+.icon-bullseye:before { content: '\e802'; } /* '' */
+.icon-plus-squared-alt:before { content: '\e803'; } /* '' */
+.icon-zoom-in:before { content: '\e804'; } /* '' */
+.icon-zoom-out:before { content: '\e805'; } /* '' */
+.icon-fighter-jet:before { content: '\e806'; } /* '' */
+.icon-award:before { content: '\e807'; } /* '' */
+.icon-toggle-off:before { content: '\e808'; } /* '' */
+.icon-toggle-on:before { content: '\e809'; } /* '' */
+.icon-play:before { content: '\e80a'; } /* '' */
+.icon-stop:before { content: '\e80b'; } /* '' */
+.icon-th:before { content: '\e80c'; } /* '' */
+.icon-paste:before { content: '\e80d'; } /* '' */
+.icon-bus:before { content: '\e80e'; } /* '' */
+.icon-rocket:before { content: '\e80f'; } /* '' */
+.icon-fire:before { content: '\e810'; } /* '' */
+.icon-brush-1:before { content: '\e812'; } /* '' */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7-codes.css
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7-codes.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7-codes.css
new file mode 100644
index 0000000..4b6063d
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7-codes.css
@@ -0,0 +1,19 @@
+
+.icon-compass { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe800;&nbsp;'); }
+.icon-minus-squared-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe801;&nbsp;'); }
+.icon-bullseye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe802;&nbsp;'); }
+.icon-plus-squared-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
+.icon-zoom-in { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe804;&nbsp;'); }
+.icon-zoom-out { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
+.icon-fighter-jet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe806;&nbsp;'); }
+.icon-award { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
+.icon-toggle-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
+.icon-toggle-on { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe809;&nbsp;'); }
+.icon-play { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80a;&nbsp;'); }
+.icon-stop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80b;&nbsp;'); }
+.icon-th { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80c;&nbsp;'); }
+.icon-paste { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80d;&nbsp;'); }
+.icon-bus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80e;&nbsp;'); }
+.icon-rocket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80f;&nbsp;'); }
+.icon-fire { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe810;&nbsp;'); }
+.icon-brush-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe812;&nbsp;'); }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7.css
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7.css
new file mode 100644
index 0000000..6fb8344
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font-ie7.css
@@ -0,0 +1,30 @@
+[class^="icon-"], [class*=" icon-"] {
+  font-family: 'nifi-icon-font';
+  font-style: normal;
+  font-weight: normal;
+ 
+  /* fix buttons height */
+  line-height: 1em;
+ 
+  /* you can be more comfortable with increased icons size */
+  /* font-size: 120%; */
+}
+ 
+.icon-compass { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe800;&nbsp;'); }
+.icon-minus-squared-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe801;&nbsp;'); }
+.icon-bullseye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe802;&nbsp;'); }
+.icon-plus-squared-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
+.icon-zoom-in { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe804;&nbsp;'); }
+.icon-zoom-out { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
+.icon-fighter-jet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe806;&nbsp;'); }
+.icon-award { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
+.icon-toggle-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
+.icon-toggle-on { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe809;&nbsp;'); }
+.icon-play { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80a;&nbsp;'); }
+.icon-stop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80b;&nbsp;'); }
+.icon-th { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80c;&nbsp;'); }
+.icon-paste { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80d;&nbsp;'); }
+.icon-bus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80e;&nbsp;'); }
+.icon-rocket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80f;&nbsp;'); }
+.icon-fire { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe810;&nbsp;'); }
+.icon-brush-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe812;&nbsp;'); }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font.css
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font.css
new file mode 100644
index 0000000..f347464
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/css/nifi-icon-font.css
@@ -0,0 +1,74 @@
+@font-face {
+  font-family: 'nifi-icon-font';
+  src: url('../font/nifi-icon-font.eot?69740385');
+  src: url('../font/nifi-icon-font.eot?69740385#iefix') format('embedded-opentype'),
+       url('../font/nifi-icon-font.woff?69740385') format('woff'),
+       url('../font/nifi-icon-font.ttf?69740385') format('truetype'),
+       url('../font/nifi-icon-font.svg?69740385#nifi-icon-font') format('svg');
+  font-weight: normal;
+  font-style: normal;
+}
+/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
+/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
+/*
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+  @font-face {
+    font-family: 'nifi-icon-font';
+    src: url('../font/nifi-icon-font.svg?69740385#nifi-icon-font') format('svg');
+  }
+}
+*/
+ 
+ [class^="icon-"]:before, [class*=" icon-"]:before {
+  font-family: "nifi-icon-font";
+  font-style: normal;
+  font-weight: normal;
+  speak: none;
+ 
+  display: inline-block;
+  text-decoration: inherit;
+  width: 1em;
+  margin-right: .2em;
+  text-align: center;
+  /* opacity: .8; */
+ 
+  /* For safety - reset parent styles, that can break glyph codes*/
+  font-variant: normal;
+  text-transform: none;
+ 
+  /* fix buttons height, for twitter bootstrap */
+  line-height: 1em;
+ 
+  /* Animation center compensation - margins should be symmetric */
+  /* remove if not needed */
+  margin-left: .2em;
+ 
+  /* you can be more comfortable with increased icons size */
+  /* font-size: 120%; */
+ 
+  /* Font smoothing. That was taken from TWBS */
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+ 
+  /* Uncomment for 3D effect */
+  /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
+}
+ 
+.icon-compass:before { content: '\e800'; } /* '' */
+.icon-minus-squared-alt:before { content: '\e801'; } /* '' */
+.icon-bullseye:before { content: '\e802'; } /* '' */
+.icon-plus-squared-alt:before { content: '\e803'; } /* '' */
+.icon-zoom-in:before { content: '\e804'; } /* '' */
+.icon-zoom-out:before { content: '\e805'; } /* '' */
+.icon-fighter-jet:before { content: '\e806'; } /* '' */
+.icon-award:before { content: '\e807'; } /* '' */
+.icon-toggle-off:before { content: '\e808'; } /* '' */
+.icon-toggle-on:before { content: '\e809'; } /* '' */
+.icon-play:before { content: '\e80a'; } /* '' */
+.icon-stop:before { content: '\e80b'; } /* '' */
+.icon-th:before { content: '\e80c'; } /* '' */
+.icon-paste:before { content: '\e80d'; } /* '' */
+.icon-bus:before { content: '\e80e'; } /* '' */
+.icon-rocket:before { content: '\e80f'; } /* '' */
+.icon-fire:before { content: '\e810'; } /* '' */
+.icon-brush-1:before { content: '\e812'; } /* '' */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/demo.html
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/demo.html b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/demo.html
new file mode 100644
index 0000000..c52bd01
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/demo.html
@@ -0,0 +1,334 @@
+<!DOCTYPE html>
+<html>
+  <head><!--[if lt IE 9]><script language="javascript" type="text/javascript" src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
+    <meta charset="UTF-8"><style>/*
+ * Bootstrap v2.2.1
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+.clearfix {
+  *zoom: 1;
+}
+.clearfix:before,
+.clearfix:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.clearfix:after {
+  clear: both;
+}
+html {
+  font-size: 100%;
+  -webkit-text-size-adjust: 100%;
+  -ms-text-size-adjust: 100%;
+}
+a:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+a:hover,
+a:active {
+  outline: 0;
+}
+button,
+input,
+select,
+textarea {
+  margin: 0;
+  font-size: 100%;
+  vertical-align: middle;
+}
+button,
+input {
+  *overflow: visible;
+  line-height: normal;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+body {
+  margin: 0;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 14px;
+  line-height: 20px;
+  color: #333;
+  background-color: #fff;
+}
+a {
+  color: #08c;
+  text-decoration: none;
+}
+a:hover {
+  color: #005580;
+  text-decoration: underline;
+}
+.row {
+  margin-left: -20px;
+  *zoom: 1;
+}
+.row:before,
+.row:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.row:after {
+  clear: both;
+}
+[class*="span"] {
+  float: left;
+  min-height: 1px;
+  margin-left: 20px;
+}
+.container,
+.navbar-static-top .container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+  width: 940px;
+}
+.span12 {
+  width: 940px;
+}
+.span11 {
+  width: 860px;
+}
+.span10 {
+  width: 780px;
+}
+.span9 {
+  width: 700px;
+}
+.span8 {
+  width: 620px;
+}
+.span7 {
+  width: 540px;
+}
+.span6 {
+  width: 460px;
+}
+.span5 {
+  width: 380px;
+}
+.span4 {
+  width: 300px;
+}
+.span3 {
+  width: 220px;
+}
+.span2 {
+  width: 140px;
+}
+.span1 {
+  width: 60px;
+}
+[class*="span"].pull-right,
+.row-fluid [class*="span"].pull-right {
+  float: right;
+}
+.container {
+  margin-right: auto;
+  margin-left: auto;
+  *zoom: 1;
+}
+.container:before,
+.container:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.container:after {
+  clear: both;
+}
+p {
+  margin: 0 0 10px;
+}
+.lead {
+  margin-bottom: 20px;
+  font-size: 21px;
+  font-weight: 200;
+  line-height: 30px;
+}
+small {
+  font-size: 85%;
+}
+h1 {
+  margin: 10px 0;
+  font-family: inherit;
+  font-weight: bold;
+  line-height: 20px;
+  color: inherit;
+  text-rendering: optimizelegibility;
+}
+h1 small {
+  font-weight: normal;
+  line-height: 1;
+  color: #999;
+}
+h1 {
+  line-height: 40px;
+}
+h1 {
+  font-size: 38.5px;
+}
+h1 small {
+  font-size: 24.5px;
+}
+body {
+  margin-top: 90px;
+}
+.header {
+  position: fixed;
+  top: 0;
+  left: 50%;
+  margin-left: -480px;
+  background-color: #fff;
+  border-bottom: 1px solid #ddd;
+  padding-top: 10px;
+  z-index: 10;
+}
+.footer {
+  color: #ddd;
+  font-size: 12px;
+  text-align: center;
+  margin-top: 20px;
+}
+.footer a {
+  color: #ccc;
+  text-decoration: underline;
+}
+.the-icons {
+  font-size: 14px;
+  line-height: 24px;
+}
+.switch {
+  position: absolute;
+  right: 0;
+  bottom: 10px;
+  color: #666;
+}
+.switch input {
+  margin-right: 0.3em;
+}
+.codesOn .i-name {
+  display: none;
+}
+.codesOn .i-code {
+  display: inline;
+}
+.i-code {
+  display: none;
+}
+@font-face {
+      font-family: 'nifi-icon-font';
+      src: url('./font/nifi-icon-font.eot?83682963');
+      src: url('./font/nifi-icon-font.eot?83682963#iefix') format('embedded-opentype'),
+           url('./font/nifi-icon-font.woff?83682963') format('woff'),
+           url('./font/nifi-icon-font.ttf?83682963') format('truetype'),
+           url('./font/nifi-icon-font.svg?83682963#nifi-icon-font') format('svg');
+      font-weight: normal;
+      font-style: normal;
+    }
+     
+     
+    .demo-icon
+    {
+      font-family: "nifi-icon-font";
+      font-style: normal;
+      font-weight: normal;
+      speak: none;
+     
+      display: inline-block;
+      text-decoration: inherit;
+      width: 1em;
+      margin-right: .2em;
+      text-align: center;
+      /* opacity: .8; */
+     
+      /* For safety - reset parent styles, that can break glyph codes*/
+      font-variant: normal;
+      text-transform: none;
+     
+      /* fix buttons height, for twitter bootstrap */
+      line-height: 1em;
+     
+      /* Animation center compensation - margins should be symmetric */
+      /* remove if not needed */
+      margin-left: .2em;
+     
+      /* You can be more comfortable with increased icons size */
+      /* font-size: 120%; */
+     
+      /* Font smoothing. That was taken from TWBS */
+      -webkit-font-smoothing: antialiased;
+      -moz-osx-font-smoothing: grayscale;
+     
+      /* Uncomment for 3D effect */
+      /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
+    }
+     </style>
+    <link rel="stylesheet" href="css/animation.css"><!--[if IE 7]><link rel="stylesheet" href="css/nifi-icon-font-ie7.css"><![endif]-->
+    <script>
+      function toggleCodes(on) {
+        var obj = document.getElementById('icons');
+        
+        if (on) {
+          obj.className += ' codesOn';
+        } else {
+          obj.className = obj.className.replace(' codesOn', '');
+        }
+      }
+      
+    </script>
+  </head>
+  <body>
+    <div class="container header">
+      <h1>
+        nifi-icon-font
+         <small>font demo</small>
+      </h1>
+      <label class="switch">
+        <input type="checkbox" onclick="toggleCodes(this.checked)">show codes
+      </label>
+    </div>
+    <div id="icons" class="container">
+      <div class="row">
+        <div title="Code: 0xe800" class="the-icons span3"><i class="demo-icon icon-compass">&#xe800;</i> <span class="i-name">icon-compass</span><span class="i-code">0xe800</span></div>
+        <div title="Code: 0xe801" class="the-icons span3"><i class="demo-icon icon-minus-squared-alt">&#xe801;</i> <span class="i-name">icon-minus-squared-alt</span><span class="i-code">0xe801</span></div>
+        <div title="Code: 0xe802" class="the-icons span3"><i class="demo-icon icon-bullseye">&#xe802;</i> <span class="i-name">icon-bullseye</span><span class="i-code">0xe802</span></div>
+        <div title="Code: 0xe803" class="the-icons span3"><i class="demo-icon icon-plus-squared-alt">&#xe803;</i> <span class="i-name">icon-plus-squared-alt</span><span class="i-code">0xe803</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xe804" class="the-icons span3"><i class="demo-icon icon-zoom-in">&#xe804;</i> <span class="i-name">icon-zoom-in</span><span class="i-code">0xe804</span></div>
+        <div title="Code: 0xe805" class="the-icons span3"><i class="demo-icon icon-zoom-out">&#xe805;</i> <span class="i-name">icon-zoom-out</span><span class="i-code">0xe805</span></div>
+        <div title="Code: 0xe806" class="the-icons span3"><i class="demo-icon icon-fighter-jet">&#xe806;</i> <span class="i-name">icon-fighter-jet</span><span class="i-code">0xe806</span></div>
+        <div title="Code: 0xe807" class="the-icons span3"><i class="demo-icon icon-award">&#xe807;</i> <span class="i-name">icon-award</span><span class="i-code">0xe807</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xe808" class="the-icons span3"><i class="demo-icon icon-toggle-off">&#xe808;</i> <span class="i-name">icon-toggle-off</span><span class="i-code">0xe808</span></div>
+        <div title="Code: 0xe809" class="the-icons span3"><i class="demo-icon icon-toggle-on">&#xe809;</i> <span class="i-name">icon-toggle-on</span><span class="i-code">0xe809</span></div>
+        <div title="Code: 0xe80a" class="the-icons span3"><i class="demo-icon icon-play">&#xe80a;</i> <span class="i-name">icon-play</span><span class="i-code">0xe80a</span></div>
+        <div title="Code: 0xe80b" class="the-icons span3"><i class="demo-icon icon-stop">&#xe80b;</i> <span class="i-name">icon-stop</span><span class="i-code">0xe80b</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xe80c" class="the-icons span3"><i class="demo-icon icon-th">&#xe80c;</i> <span class="i-name">icon-th</span><span class="i-code">0xe80c</span></div>
+        <div title="Code: 0xe80d" class="the-icons span3"><i class="demo-icon icon-paste">&#xe80d;</i> <span class="i-name">icon-paste</span><span class="i-code">0xe80d</span></div>
+        <div title="Code: 0xe80e" class="the-icons span3"><i class="demo-icon icon-bus">&#xe80e;</i> <span class="i-name">icon-bus</span><span class="i-code">0xe80e</span></div>
+        <div title="Code: 0xe80f" class="the-icons span3"><i class="demo-icon icon-rocket">&#xe80f;</i> <span class="i-name">icon-rocket</span><span class="i-code">0xe80f</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xe810" class="the-icons span3"><i class="demo-icon icon-fire">&#xe810;</i> <span class="i-name">icon-fire</span><span class="i-code">0xe810</span></div>
+        <div title="Code: 0xe812" class="the-icons span3"><i class="demo-icon icon-brush-1">&#xe812;</i> <span class="i-name">icon-brush-1</span><span class="i-code">0xe812</span></div>
+      </div>
+    </div>
+    <div class="container footer">Generated by <a href="http://fontello.com">fontello.com</a></div>
+  </body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/6b571081/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.eot
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.eot b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.eot
new file mode 100644
index 0000000..520e333
Binary files /dev/null and b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/icon-font/font/nifi-icon-font.eot differ