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 2015/01/21 14:05:08 UTC

[56/64] incubator-nifi git commit: Merge branch 'develop' into NIFI-250

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c5d452c1/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
----------------------------------------------------------------------
diff --cc nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
index 0000000,d12b660..0df26b1
mode 000000,100644..100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
@@@ -1,0 -1,646 +1,647 @@@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!--
+   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.
+ -->
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+     <modelVersion>4.0.0</modelVersion>
+     <parent>
+         <groupId>org.apache.nifi</groupId>
+         <artifactId>nifi-web</artifactId>
+         <version>0.0.1-incubating-SNAPSHOT</version>
+     </parent>
+     <artifactId>nifi-web-ui</artifactId>
+     <packaging>war</packaging>
+     <properties>
+         <staging.dir>${project.build.directory}/tmp</staging.dir>
+         <canvas.filter>canvas.properties</canvas.filter>
+         <history.filter>history.properties</history.filter>
+         <summary.filter>summary.properties</summary.filter>
+         <counters.filter>counters.properties</counters.filter>
+         <cluster.filter>cluster.properties</cluster.filter>
+         <templates.filter>templates.properties</templates.filter>
+         <users.filter>users.properties</users.filter>
+         <bulletin.board.filter>bulletin-board.properties</bulletin.board.filter>
+         <provenance.filter>provenance.properties</provenance.filter>
+     </properties>
+     <build>
+         <!--
+             These filters are used to populate the includes (css and js)
+             for each of the avialable pages. The property is the name of
+             the file which contains the properties that define which
+             css and js files get included. When running with minify and
+             compression (default) the filter properties will be overridden
+             in the profile. The JSPs that contain the HEAD portion of the
+             pages will not be pre-compiled and will instead be filtered
+             when the war is built.
+         -->
+         <filters>
+             <filter>src/main/resources/filters/${canvas.filter}</filter>
+             <filter>src/main/resources/filters/${history.filter}</filter>
+             <filter>src/main/resources/filters/${summary.filter}</filter>
+             <filter>src/main/resources/filters/${counters.filter}</filter>
+             <filter>src/main/resources/filters/${cluster.filter}</filter>
+             <filter>src/main/resources/filters/${templates.filter}</filter>
+             <filter>src/main/resources/filters/${users.filter}</filter>
+             <filter>src/main/resources/filters/${bulletin.board.filter}</filter>
+             <filter>src/main/resources/filters/${provenance.filter}</filter>
+         </filters>
+         <plugins>
+             <!--
+                 Precompile jsp's and add entries into the web.xml - the web.xml
+                 is automatically places in ${project.build.directory}. Do not
+                 precompile canvas.jsp, summary.jsp, history.jsp, etc. 
+                 These jsp's need to have the artifacts version filtered in to 
+                 eliminate broswer caching issues and set up the proper includes. 
+                 Since the webResource filter occurs after the precompilation we 
+                 must exclude them here.
+             -->
+             <plugin>
+                 <groupId>org.mortbay.jetty</groupId>
+                 <artifactId>jetty-jspc-maven-plugin</artifactId>
+                 <version>8.1.10.v20130312</version>
+                 <executions>
+                     <execution>
+                         <goals>
+                             <goal>jspc</goal>
+                         </goals>
+                         <configuration>
+                             <packageRoot>org.apache.nifi.web.jsp</packageRoot>
+                             <keepSources>true</keepSources>
+                             <verbose>true</verbose>
+                             <excludes>
+                                 **/canvas.jsp,
+                                 **/summary.jsp,
+                                 **/history.jsp,
+                                 **/provenance.jsp,
+                                 **/counters.jsp,
+                                 **/cluster.jsp,
+                                 **/templates.jsp,
+                                 **/users.jsp,
+                                 **/bulletin-board.jsp
+                             </excludes>
+                         </configuration>
+                     </execution>
+                 </executions>
+             </plugin>
+             <!--
+                 Filter the web.xml that was generated from jspc to specify the
+                 NiFi base directory. the plugin configuration is
+                 specified here while the execution's are defined below in the
+                 profiles to bind to the appropriate phase
+             -->
+             <plugin>
+                 <groupId>org.apache.maven.plugins</groupId>
+                 <artifactId>maven-resources-plugin</artifactId>
+                 <executions>
+                     <execution>
+                         <phase>prepare-package</phase>
+                         <goals>
+                             <goal>copy-resources</goal>
+                         </goals>
+                         <configuration>
+                             <outputDirectory>${staging.dir}/WEB-INF</outputDirectory>
+                             <resources>
+                                 <resource>
+                                     <directory>${project.build.directory}</directory>
+                                     <filtering>true</filtering>
+                                     <includes>
+                                         <include>web.xml</include>
+                                     </includes>
+                                 </resource>
+                             </resources>
+                         </configuration>
+                     </execution>
+                 </executions>
+             </plugin>
+             <!--
+                 Tell the war plugin where to find the filtered web.xml and
+                 filter the head portion of the pages. The correct includes and
+                 project version is filtered into these jsp's as a browser cache 
+                 buster.
+             -->
+             <plugin>
+                 <groupId>org.apache.maven.plugins</groupId>
+                 <artifactId>maven-war-plugin</artifactId>
+                 <configuration>
+                     <webXml>${staging.dir}/WEB-INF/web.xml</webXml>
+                     <webResources>
+                         <resource>
+                             <directory>src/main/webapp/WEB-INF/pages</directory>
+                             <targetPath>WEB-INF/pages</targetPath>
+                             <includes>
+                                 <include>canvas.jsp</include>
+                             </includes>
+                             <filtering>true</filtering>
+                         </resource>
+                         <resource>
+                             <directory>src/main/webapp/WEB-INF/pages</directory>
+                             <targetPath>WEB-INF/pages</targetPath>
+                             <includes>
+                                 <include>summary.jsp</include>
+                             </includes>
+                             <filtering>true</filtering>
+                         </resource>
+                         <resource>
+                             <directory>src/main/webapp/WEB-INF/pages</directory>
+                             <targetPath>WEB-INF/pages</targetPath>
+                             <includes>
+                                 <include>history.jsp</include>
+                             </includes>
+                             <filtering>true</filtering>
+                         </resource>
+                         <resource>
+                             <directory>src/main/webapp/WEB-INF/pages</directory>
+                             <targetPath>WEB-INF/pages</targetPath>
+                             <includes>
+                                 <include>provenance.jsp</include>
+                             </includes>
+                             <filtering>true</filtering>
+                         </resource>
+                         <resource>
+                             <directory>src/main/webapp/WEB-INF/pages</directory>
+                             <targetPath>WEB-INF/pages</targetPath>
+                             <includes>
+                                 <include>counters.jsp</include>
+                             </includes>
+                             <filtering>true</filtering>
+                         </resource>
+                         <resource>
+                             <directory>src/main/webapp/WEB-INF/pages</directory>
+                             <targetPath>WEB-INF/pages</targetPath>
+                             <includes>
+                                 <include>templates.jsp</include>
+                             </includes>
+                             <filtering>true</filtering>
+                         </resource>
+                         <resource>
+                             <directory>src/main/webapp/WEB-INF/pages</directory>
+                             <targetPath>WEB-INF/pages</targetPath>
+                             <includes>
+                                 <include>users.jsp</include>
+                             </includes>
+                             <filtering>true</filtering>
+                         </resource>
+                         <resource>
+                             <directory>src/main/webapp/WEB-INF/pages</directory>
+                             <targetPath>WEB-INF/pages</targetPath>
+                             <includes>
+                                 <include>cluster.jsp</include>
+                             </includes>
+                             <filtering>true</filtering>
+                         </resource>
+                         <resource>
+                             <directory>src/main/webapp/WEB-INF/pages</directory>
+                             <targetPath>WEB-INF/pages</targetPath>
+                             <includes>
+                                 <include>bulletin-board.jsp</include>
+                             </includes>
+                             <filtering>true</filtering>
+                         </resource>
+                     </webResources>
+                 </configuration>
+             </plugin>
+         </plugins>
+     </build>
+     <profiles>
+         <profile>
+             <id>minify-and-compress</id>
+             <activation>
+                 <activeByDefault>true</activeByDefault>
+             </activation>
+             <properties>
+                 <canvas.filter>canvas-min.properties</canvas.filter>
+                 <history.filter>history-min.properties</history.filter>
+                 <summary.filter>summary-min.properties</summary.filter>
+                 <counters.filter>counters-min.properties</counters.filter>
+                 <cluster.filter>cluster-min.properties</cluster.filter>
+                 <templates.filter>templates-min.properties</templates.filter>
+                 <users.filter>users-min.properties</users.filter>
+                 <bulletin.board.filter>bulletin-board-min.properties</bulletin.board.filter>
+                 <provenance.filter>provenance-min.properties</provenance.filter>
+             </properties>
+             <build>
+                 <plugins>
+                     <!--
+                         Minifies and compresses the javascript and css. 
+                     -->
+                     <plugin>
+                         <groupId>net.alchim31.maven</groupId>
+                         <artifactId>yuicompressor-maven-plugin</artifactId>
+                         <version>1.1</version>
+                         <executions>
+                             <execution>
+                                 <id>minify</id>
+                                 <goals>
+                                     <goal>compress</goal>
+                                 </goals>
+                                 <configuration>
+                                     <sourceDirectory>src/main/webapp</sourceDirectory>
+                                     <outputDirectory>${staging.dir}</outputDirectory>
+                                     <nomunge>false</nomunge>
+                                     <jswarn>false</jswarn>
+                                     <nosuffix>true</nosuffix>
+                                     <gzip>true</gzip>
+                                     <aggregations>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/js/nf/canvas/nf-canvas-all.js</output>
+                                             <includes>
+                                                 <include>${staging.dir}/js/nf/nf-client.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-common.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-canvas-utils.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-dialog.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-shell.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-storage.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-snippet.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-canvas-toolbox.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-custom-processor-ui.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-registration.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-processor-property-table.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-processor-property-text-editor.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-processor-property-nfel-editor.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-processor-property-combo-editor.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-processor-configuration.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-processor-details.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-process-group-configuration.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-process-group-details.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-remote-process-group-configuration.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-remote-process-group-details.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-remote-process-group-ports.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-port-configuration.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-port-details.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-secure-port-configuration.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-secure-port-details.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-label-configuration.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-connection-configuration.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-connection-details.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-graph.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-processor.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-label.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-port.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-process-group.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-remote-process-group.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-funnel.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-connection.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-draggable.js</include>
+                                                 <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>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-search.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-settings.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-go-to.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-actions.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-context-menu.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-status-history.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-canvas.js</include>
+                                                 <include>${staging.dir}/js/nf/canvas/nf-clipboard.js</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/js/nf/history/nf-history-all.js</output>
+                                             <includes>
+                                                 <include>${staging.dir}/js/nf/nf-client.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-common.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-dialog.js</include>
+                                                 <include>${staging.dir}/js/nf/history/nf-history.js</include>
+                                                 <include>${staging.dir}/js/nf/history/nf-history-table.js</include>
+                                                 <include>${staging.dir}/js/nf/history/nf-history-model.js</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/js/nf/provenance/nf-provenance-all.js</output>
+                                             <includes>
+                                                 <include>${staging.dir}/js/nf/nf-client.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-common.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-dialog.js</include>
+                                                 <include>${staging.dir}/js/nf/provenance/nf-provenance.js</include>
+                                                 <include>${staging.dir}/js/nf/provenance/nf-provenance-table.js</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/js/nf/summary/nf-summary-all.js</output>
+                                             <includes>
+                                                 <include>${staging.dir}/js/nf/nf-client.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-common.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-dialog.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-processor-details.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-connection-details.js</include>
+                                                 <include>${staging.dir}/js/nf/summary/nf-summary.js</include>
+                                                 <include>${staging.dir}/js/nf/summary/nf-summary-table.js</include>
+                                                 <include>${staging.dir}/js/nf/summary/nf-cluster-search.js</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/js/nf/counters/nf-counters-all.js</output>
+                                             <includes>
+                                                 <include>${staging.dir}/js/nf/nf-client.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-common.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-dialog.js</include>
+                                                 <include>${staging.dir}/js/nf/counters/nf-counters.js</include>
+                                                 <include>${staging.dir}/js/nf/counters/nf-counters-table.js</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/js/nf/templates/nf-templates-all.js</output>
+                                             <includes>
+                                                 <include>${staging.dir}/js/nf/nf-client.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-common.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-dialog.js</include>
+                                                 <include>${staging.dir}/js/nf/templates/nf-templates.js</include>
+                                                 <include>${staging.dir}/js/nf/templates/nf-templates-table.js</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/js/nf/cluster/nf-cluster-all.js</output>
+                                             <includes>
+                                                 <include>${staging.dir}/js/nf/nf-client.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-common.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-dialog.js</include>
+                                                 <include>${staging.dir}/js/nf/cluster/nf-cluster.js</include>
+                                                 <include>${staging.dir}/js/nf/cluster/nf-cluster-table.js</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/js/nf/users/nf-users-all.js</output>
+                                             <includes>
+                                                 <include>${staging.dir}/js/nf/nf-client.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-common.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-dialog.js</include>
+                                                 <include>${staging.dir}/js/nf/users/nf-users.js</include>
+                                                 <include>${staging.dir}/js/nf/users/nf-users-table.js</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/js/nf/bulletin-board/nf-bulletin-board-all.js</output>
+                                             <includes>
+                                                 <include>${staging.dir}/js/nf/nf-client.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-common.js</include>
+                                                 <include>${staging.dir}/js/nf/nf-dialog.js</include>
+                                                 <include>${staging.dir}/js/nf/bulletin-board/nf-bulletin-board.js</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/css/nf-canvas-all.css</output>
+                                             <includes>
+                                                 <include>${staging.dir}/css/processor-configuration.css</include>
+                                                 <include>${staging.dir}/css/processor-details.css</include>
+                                                 <include>${staging.dir}/css/process-group-configuration.css</include>
+                                                 <include>${staging.dir}/css/process-group-details.css</include>
+                                                 <include>${staging.dir}/css/remote-process-group-configuration.css</include>
+                                                 <include>${staging.dir}/css/port-configuration.css</include>
+                                                 <include>${staging.dir}/css/port-details.css</include>
+                                                 <include>${staging.dir}/css/label-configuration.css</include>
+                                                 <include>${staging.dir}/css/connection-configuration.css</include>
+                                                 <include>${staging.dir}/css/connection-details.css</include>
+                                                 <include>${staging.dir}/css/shell.css</include>
+                                                 <include>${staging.dir}/css/registration.css</include>
+                                                 <include>${staging.dir}/css/dialog.css</include>
+                                                 <include>${staging.dir}/css/new-processor-dialog.css</include>
++                                                <include>${staging.dir}/css/new-controller-service-dialog.css</include>
+                                                 <include>${staging.dir}/css/graph.css</include>
+                                                 <include>${staging.dir}/css/header.css</include>
+                                                 <include>${staging.dir}/css/main.css</include>
+                                                 <include>${staging.dir}/css/banner.css</include>
+                                                 <include>${staging.dir}/css/navigation.css</include>
+                                                 <include>${staging.dir}/css/flow-status.css</include>
+                                                 <include>${staging.dir}/css/settings.css</include>
+                                                 <include>${staging.dir}/css/about.css</include>
+                                                 <include>${staging.dir}/css/status-history.css</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/css/nf-history-all.css</output>
+                                             <includes>
+                                                 <include>${staging.dir}/css/main.css</include>
+                                                 <include>${staging.dir}/css/banner.css</include>
+                                                 <include>${staging.dir}/css/dialog.css</include>
+                                                 <include>${staging.dir}/css/history.css</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/css/nf-provenance-all.css</output>
+                                             <includes>
+                                                 <include>${staging.dir}/css/main.css</include>
+                                                 <include>${staging.dir}/css/banner.css</include>
+                                                 <include>${staging.dir}/css/dialog.css</include>
+                                                 <include>${staging.dir}/css/provenance.css</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/css/nf-summary-all.css</output>
+                                             <includes>
+                                                 <include>${staging.dir}/css/main.css</include>
+                                                 <include>${staging.dir}/css/banner.css</include>
+                                                 <include>${staging.dir}/css/dialog.css</include>
+                                                 <include>${staging.dir}/css/processor-details.css</include>
+                                                 <include>${staging.dir}/css/connection-details.css</include>
+                                                 <include>${staging.dir}/css/status-history.css</include>
+                                                 <include>${staging.dir}/css/summary.css</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/css/nf-counters-all.css</output>
+                                             <includes>
+                                                 <include>${staging.dir}/css/main.css</include>
+                                                 <include>${staging.dir}/css/banner.css</include>
+                                                 <include>${staging.dir}/css/dialog.css</include>
+                                                 <include>${staging.dir}/css/counters.css</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/css/nf-cluster-all.css</output>
+                                             <includes>
+                                                 <include>${staging.dir}/css/main.css</include>
+                                                 <include>${staging.dir}/css/banner.css</include>
+                                                 <include>${staging.dir}/css/dialog.css</include>
+                                                 <include>${staging.dir}/css/cluster.css</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/css/nf-templates-all.css</output>
+                                             <includes>
+                                                 <include>${staging.dir}/css/main.css</include>
+                                                 <include>${staging.dir}/css/banner.css</include>
+                                                 <include>${staging.dir}/css/dialog.css</include>
+                                                 <include>${staging.dir}/css/templates.css</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/css/nf-users-all.css</output>
+                                             <includes>
+                                                 <include>${staging.dir}/css/main.css</include>
+                                                 <include>${staging.dir}/css/banner.css</include>
+                                                 <include>${staging.dir}/css/dialog.css</include>
+                                                 <include>${staging.dir}/css/users.css</include>
+                                             </includes>
+                                         </aggregation>
+                                         <aggregation>
+                                             <insertNewLine>true</insertNewLine>
+                                             <output>${project.build.directory}/${project.build.finalName}/css/nf-bulletin-board-all.css</output>
+                                             <includes>
+                                                 <include>${staging.dir}/css/main.css</include>
+                                                 <include>${staging.dir}/css/banner.css</include>
+                                                 <include>${staging.dir}/css/dialog.css</include>
+                                                 <include>${staging.dir}/css/bulletin-board.css</include>
+                                             </includes>
+                                         </aggregation>
+                                     </aggregations>
+                                 </configuration>
+                             </execution>
+                         </executions>
+                     </plugin>
+                     <!--
+                         Configuration to ensure that we only bundle the gzip compressed
+                         version of static content.
+                     -->
+                     <plugin>
+                         <groupId>org.apache.maven.plugins</groupId>
+                         <artifactId>maven-war-plugin</artifactId>
+                         <version>2.5</version>
+                         <configuration>
+                             <packagingIncludes>
+                                 css/reset.css,
+                                 css/reset.css.gz,
+                                 css/message-page.css,
+                                 css/message-page.css.gz,
+                                 css/message-pane.css,
+                                 css/message-pane.css.gz,
+                                 css/nf-canvas-all.css,
+                                 css/nf-canvas-all.css.gz,
+                                 css/nf-history-all.css,
+                                 css/nf-history-all.css.gz,
+                                 css/nf-provenance-all.css,
+                                 css/nf-provenance-all.css.gz,
+                                 css/nf-summary-all.css,
+                                 css/nf-summary-all.css.gz,
+                                 css/nf-counters-all.css,
+                                 css/nf-counters-all.css.gz,
+                                 css/nf-cluster-all.css,
+                                 css/nf-cluster-all.css.gz,
+                                 css/nf-templates-all.css,
+                                 css/nf-templates-all.css.gz,
+                                 css/nf-users-all.css,
+                                 css/nf-users-all.css.gz,
+                                 css/nf-bulletin-board-all.css,
+                                 css/nf-bulletin-board-all.css.gz,
+                                 js/*,
+                                 js/d3/**/*,
+                                 js/codemirror/**/*,
+                                 js/jquery/**/*,
+                                 js/nf/nf-namespace.js,
+                                 js/nf/nf-namespace.js.gz,
+                                 js/nf/nf-status-history.js,
+                                 js/nf/nf-status-history.js.gz,
+                                 js/nf/canvas/nf-canvas-all.js,
+                                 js/nf/canvas/nf-canvas-all.js.gz,
+                                 js/nf/history/nf-history-all.js,
+                                 js/nf/history/nf-history-all.js.gz,
+                                 js/nf/provenance/nf-provenance-all.js,
+                                 js/nf/provenance/nf-provenance-all.js.gz,
+                                 js/nf/provenance/nf-provenance-lineage.js,
+                                 js/nf/provenance/nf-provenance-lineage.js.gz,
+                                 js/nf/summary/nf-summary-all.js,
+                                 js/nf/summary/nf-summary-all.js.gz,
+                                 js/nf/counters/nf-counters-all.js,
+                                 js/nf/counters/nf-counters-all.js.gz,
+                                 js/nf/cluster/nf-cluster-all.js,
+                                 js/nf/cluster/nf-cluster-all.js.gz,
+                                 js/nf/templates/nf-templates-all.js,
+                                 js/nf/templates/nf-templates-all.js.gz,
+                                 js/nf/users/nf-users-all.js,
+                                 js/nf/users/nf-users-all.js.gz,
+                                 js/nf/bulletin-board/nf-bulletin-board-all.js,
+                                 js/nf/bulletin-board/nf-bulletin-board-all.js.gz,
+                                 images/*,
+                                 resources/*,
+                                 images/*,
+                                 WEB-INF/**/*
+                             </packagingIncludes>
+                         </configuration>
+                     </plugin>
+                 </plugins>
+             </build>
+         </profile>
+     </profiles>
+     <dependencies>
+         <!--
+             Artifacts that will be on the jetty classpath at runtime either through
+             the application classpath or the maven jetty plugin classpath defined
+             above.
+         -->
+         
+         <dependency>
+             <groupId>commons-io</groupId>
+             <artifactId>commons-io</artifactId>
+             <scope>provided</scope>
+         </dependency>
+         <dependency>
+             <groupId>org.apache.commons</groupId>
+             <artifactId>commons-lang3</artifactId>
+             <scope>provided</scope>
+         </dependency>
+         <dependency>
+             <groupId>batik</groupId>
+             <artifactId>batik-transcoder</artifactId>
+             <version>1.6-1</version>
+             <exclusions>
+                 <exclusion>
+                     <groupId>fop</groupId>
+                     <artifactId>fop</artifactId>
+                 </exclusion>
+             </exclusions>
+         </dependency>
+         
+         <dependency>
+             <groupId>javax.servlet</groupId>
+             <artifactId>javax.servlet-api</artifactId>
+             <scope>provided</scope>
+         </dependency>
+         <dependency>
+             <groupId>javax.servlet.jsp</groupId>
+             <artifactId>javax.servlet.jsp-api</artifactId>
+             <scope>provided</scope>
+         </dependency>
+         <dependency>
+             <groupId>javax.el</groupId>
+             <artifactId>javax.el-api</artifactId>
+             <scope>provided</scope>            
+         </dependency>
+         <dependency>
+             <groupId>javax.servlet.jsp.jstl</groupId>
+             <artifactId>javax.servlet.jsp.jstl-api</artifactId>
+             <scope>provided</scope>
+         </dependency>
+         
+     </dependencies>
+ </project>

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c5d452c1/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp
----------------------------------------------------------------------
diff --cc nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp
index 0000000,ba65475..13079e5
mode 000000,100644..100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp
@@@ -1,0 -1,118 +1,121 @@@
+ <%--
+  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" />
+         ${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" />
+         <link rel="stylesheet" href="js/jquery/nfeditor/jquery.nfeditor.css?${project.version}" type="text/css" />
+         <link rel="stylesheet" href="js/jquery/nfeditor/languages/nfel.css?${project.version}" type="text/css" />
+         <link rel="stylesheet" href="js/jquery/tabbs/jquery.tabbs.css?${project.version}" type="text/css" />
+         <link rel="stylesheet" href="js/jquery/combo/jquery.combo.css?${project.version}" type="text/css" />
++        <link rel="stylesheet" href="js/jquery/tagcloud/jquery.tagcloud.css?${project.version}" type="text/css" />
+         <link rel="stylesheet" href="js/jquery/modal/jquery.modal.css?${project.version}" type="text/css" />
+         <link rel="stylesheet" href="js/jquery/qtip2/jquery.qtip.min.css?" type="text/css" />
+         <link rel="stylesheet" href="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.css" type="text/css" />
+         <link rel="stylesheet" href="js/jquery/minicolors/jquery.minicolors.css" type="text/css" />
+         <link rel="stylesheet" href="js/jquery/slickgrid/css/slick.grid.css" type="text/css" />
+         <link rel="stylesheet" href="js/jquery/slickgrid/css/slick-default-theme.css" type="text/css" />
+         <script type="text/javascript" src="js/codemirror/lib/codemirror-compressed.js"></script>
+         <script type="text/javascript" src="js/jquery/jquery-2.1.1.min.js"></script>
+         <script type="text/javascript" src="js/jquery/ui-smoothness/jquery-ui-1.10.4.min.js"></script>
+         <script type="text/javascript" src="js/jquery/jquery.center.js"></script>
+         <script type="text/javascript" src="js/jquery/jquery.count.js"></script>
+         <script type="text/javascript" src="js/jquery/jquery.ellipsis.js"></script>
+         <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
+         <script type="text/javascript" src="js/jquery/jquery.tab.js"></script>
+         <script type="text/javascript" src="js/jquery/tabbs/jquery.tabbs.js?${project.version}"></script>
+         <script type="text/javascript" src="js/jquery/combo/jquery.combo.js?${project.version}"></script>
++        <script type="text/javascript" src="js/jquery/tagcloud/jquery.tagcloud.js?${project.version}"></script>
+         <script type="text/javascript" src="js/jquery/modal/jquery.modal.js?${project.version}"></script>
+         <script type="text/javascript" src="js/jquery/minicolors/jquery.minicolors.min.js"></script>
+         <script type="text/javascript" src="js/jquery/qtip2/jquery.qtip.min.js"></script>
+         <script type="text/javascript" src="js/jquery/jquery.event.drag-2.2.min.js"></script>
+         <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellrangeselector.js"></script>
+         <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.cellselectionmodel.js"></script>
+         <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.rowselectionmodel.js"></script>
+         <script type="text/javascript" src="js/jquery/slickgrid/plugins/slick.autotooltips.js"></script>
+         <script type="text/javascript" src="js/jquery/slickgrid/slick.formatters.js"></script>
+         <script type="text/javascript" src="js/jquery/slickgrid/slick.editors.js"></script>
+         <script type="text/javascript" src="js/jquery/slickgrid/slick.dataview.js"></script>
+         <script type="text/javascript" src="js/jquery/slickgrid/slick.core.js"></script>
+         <script type="text/javascript" src="js/jquery/slickgrid/slick.grid.js"></script>
+         <script type="text/javascript" src="js/json2.js"></script>
+         <script type="text/javascript" src="js/nf/nf-namespace.js?${project.version}"></script>
+         ${nf.canvas.script.tags}
+         <script type="text/javascript" src="js/jquery/nfeditor/languages/nfel.js?${project.version}"></script>
+         <script type="text/javascript" src="js/jquery/nfeditor/jquery.nfeditor.js?${project.version}"></script>
+     </head>
+     <body id="canvas-body">
+         <div id="splash">
+             <img id="splash-img" src="images/loadAnimation.gif" alt="Loading..."/>
+         </div>
+         <jsp:include page="/WEB-INF/partials/message-pane.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/registration.jsp"/>
+         <jsp:include page="/WEB-INF/partials/banners-main.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/canvas-header.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/about-dialog.jsp"/>
+         <jsp:include page="/WEB-INF/partials/ok-dialog.jsp"/>
+         <jsp:include page="/WEB-INF/partials/yes-no-dialog.jsp"/>
+         <jsp:include page="/WEB-INF/partials/status-history-dialog.jsp"/>
++        <jsp:include page="/WEB-INF/partials/canvas/new-controller-service-dialog.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/new-processor-dialog.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/new-port-dialog.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/new-process-group-dialog.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/new-remote-process-group-dialog.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/new-template-dialog.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/instantiate-template-dialog.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/new-processor-property-dialog.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/fill-color-dialog.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/connections-dialog.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/flow-status.jsp"/>
+         <div id="canvas-container" class="unselectable"></div>
+         <div id="canvas-tooltips">
+             <div id="processor-tooltips"></div>
+             <div id="port-tooltips"></div>
+             <div id="process-group-tooltips"></div>
+             <div id="remote-process-group-tooltips"></div>
+         </div>
+         <jsp:include page="/WEB-INF/partials/canvas/navigation.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/settings-content.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/shell.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/processor-configuration.jsp"/>
+         <jsp:include page="/WEB-INF/partials/processor-details.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/process-group-configuration.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/process-group-details.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/remote-process-group-configuration.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/remote-process-group-details.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/remote-process-group-ports.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/remote-port-configuration.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/port-configuration.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/port-details.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/secure-port-configuration.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/secure-port-details.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/label-configuration.jsp"/>
+         <jsp:include page="/WEB-INF/partials/canvas/connection-configuration.jsp"/>
+         <jsp:include page="/WEB-INF/partials/connection-details.jsp"/>
+         <div id="faded-background"></div>
+         <div id="glass-pane"></div>
+         <div id="context-menu" class="unselectable"></div>
+     </body>
+ </html>

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c5d452c1/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-processor-dialog.jsp
----------------------------------------------------------------------
diff --cc nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-processor-dialog.jsp
index 0000000,29b57c9..df7766c
mode 000000,100644..100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-processor-dialog.jsp
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-processor-dialog.jsp
@@@ -1,0 -1,50 +1,48 @@@
+ <%--
+  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" %>
+ <div id="new-processor-dialog">
+     <div class="dialog-content">
+         <div id="processor-type-filter-controls">
+             <div id="processor-type-filter-container">
+                 <input type="text" id="processor-type-filter"/>
+                 <div id="processor-type-filter-options"></div>
+             </div>
+             <div id="processor-type-filter-status">
+                 Displaying&nbsp;<span id="displayed-processor-types"></span>&nbsp;of&nbsp;<span id="total-processor-types"></span>
+             </div>
+         </div>
 -        <div id="tag-cloud-container">
++        <div id="processor-tag-cloud-container">
+             <div class="setting">
+                 <div class="setting-name">Tags</div>
+                 <div class="setting-field">
 -                    <ul id="tag-cloud"></ul>
 -                    <div id="tag-cloud-separator"></div>
 -                    <ul id="tag-filter"></ul>
++                    <div id="processor-tag-cloud"></div>
+                 </div>
+             </div>
+         </div>
+         <div id="processor-types-container">
+             <div id="processor-types-table" class="unselectable"></div>
+             <div id="processor-description-container">
+                 <div id="processor-type-name" class="ellipsis"></div>
+                 <div id="processor-type-description" class="ellipsis multiline"></div>
+                 <span class="hidden" id="selected-processor-name"></span>
+                 <span class="hidden" id="selected-processor-type"></span>
+             </div>
+         </div>
+         <div class="clear"></div>
+     </div>
+ </div>

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c5d452c1/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/registration.jsp
----------------------------------------------------------------------
diff --cc nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/registration.jsp
index 0000000,4a965e4..56b3236
mode 000000,100644..100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/registration.jsp
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/registration.jsp
@@@ -1,0 -1,44 +1,44 @@@
+ <%--
+  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" %>
+ <div id="registration-pane" class="message-pane hidden">
+     <div class="message-pane-message-box">
+         <p id="register-title" class="message-pane-title">You are not authorized to access this data flow</p>
+         <p id="register-content" class="message-pane-content">
+         <div>
 -            <div id="expand-registration-button" class="registration-collapsed pointer"></div>
++            <div id="expand-registration-button" class="collapsed pointer"></div>
+             <span id="expand-registration-text" class="link">Request Access</span>
+         </div>
+         <div id="registration-form" class="settings hidden">
+             <div class="setting">
+                 <div class="setting-name">Justification</div>
+                 <div class="setting-field">
+                     <textarea cols="30" rows="4" id="registration-justification" maxlength="500" name="registration-justification" class="setting-input"></textarea>
+                 </div>
+                 <div style="text-align: right; color: #666; margin-top: 2px;">
+                     <span id="remaining-characters"></span>&nbsp;characters remaining
+                 </div>
+                 <div class="clear"></div>
+             </div>
+             <div>
+                 <div id="registration-form-submit" class="button">Submit</div>
+                 <div class="clear"></div>
+             </div>
+         </div>
+         </p>
+     </div>
+ </div>

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c5d452c1/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/settings-content.jsp
----------------------------------------------------------------------
diff --cc nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/settings-content.jsp
index 0000000,d9b2f29..b235bdf
mode 000000,100644..100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/settings-content.jsp
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/settings-content.jsp
@@@ -1,0 -1,60 +1,76 @@@
+ <%--
+  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" %>
+ <div id="settings">
+     <div id="settings-header-text">NiFi Settings</div>
+     <div id="settings-container">
 -        <div id="general-settings">
 -            <div class="setting">
 -                <div class="setting-name">Data flow name</div>
 -                <div class="setting-field">
 -                    <input type="text" id="data-flow-title-field" name="data-flow-title" class="setting-input"/>
 -                    <span id="archive-flow-link" class="link">Back-up flow</span>
 -                    <img class="setting-icon icon-info" src="images/iconInfo.png" alt="Info" title="Archives the flow configuration."/>
 -                </div>
 -            </div>
 -            <div class="setting">
 -                <div class="setting-name">Data flow comments</div>
 -                <div class="setting-field">
 -                    <textarea id="data-flow-comments-field" name="data-flow-comments" class="setting-input"></textarea>
++        <div id="settings-tabs-container">
++            <div id="settings-tabs"></div>
++            <div id="new-service-or-task" class="add-icon-bg"></div>
++            <div class="clear"></div>
++        </div>
++        <div id="settings-tab-background"></div>
++        <div id="settings-tabs-content">
++            <div id="general-settings-tab-content" class="configuration-tab">
++                <div id="general-settings">
++                    <div class="setting">
++                        <div class="setting-name">Data flow name</div>
++                        <div class="setting-field">
++                            <input type="text" id="data-flow-title-field" name="data-flow-title" class="setting-input"/>
++                            <span id="archive-flow-link" class="link">Back-up flow</span>
++                            <img class="setting-icon icon-info" src="images/iconInfo.png" alt="Info" title="Archives the flow configuration."/>
++                        </div>
++                    </div>
++                    <div class="setting">
++                        <div class="setting-name">Data flow comments</div>
++                        <div class="setting-field">
++                            <textarea id="data-flow-comments-field" name="data-flow-comments" class="setting-input"></textarea>
++                        </div>
++                    </div>
++                    <div class="setting">
++                        <div class="setting-name">
++                            Maximum timer driven thread count
++                            <img class="setting-icon icon-info" src="images/iconInfo.png" alt="Info" title="The maximum number of threads for timer driven processors available to the system."/>
++                        </div>
++                        <div class="setting-field">
++                            <input type="text" id="maximum-timer-driven-thread-count-field" class="setting-input"/>
++                        </div>
++                    </div>
++                    <div class="setting">
++                        <div class="setting-name">
++                            Maximum event driven thread count
++                            <img class="setting-icon icon-info" src="images/iconInfo.png" alt="Info" title="The maximum number of threads for event driven processors available to the system."/>
++                        </div>
++                        <div class="setting-field">
++                            <input type="text" id="maximum-event-driven-thread-count-field" class="setting-input"/>
++                        </div>
++                    </div>
++                    <div id="settings-buttons">
++                        <div id="settings-save" class="button">Apply</div>
++                        <div class="clear"></div>
++                    </div>
+                 </div>
+             </div>
 -            <div class="setting">
 -                <div class="setting-name">
 -                    Maximum timer driven thread count
 -                    <img class="setting-icon icon-info" src="images/iconInfo.png" alt="Info" title="The maximum number of threads for timer driven processors available to the system."/>
 -                </div>
 -                <div class="setting-field">
 -                    <input type="text" id="maximum-timer-driven-thread-count-field" class="setting-input"/>
 -                </div>
++            <div id="controller-services-tab-content" class="configuration-tab">
++                <div id="controller-services-table" class="settings-table"></div>
+             </div>
 -            <div class="setting">
 -                <div class="setting-name">
 -                    Maximum event driven thread count
 -                    <img class="setting-icon icon-info" src="images/iconInfo.png" alt="Info" title="The maximum number of threads for event driven processors available to the system."/>
 -                </div>
 -                <div class="setting-field">
 -                    <input type="text" id="maximum-event-driven-thread-count-field" class="setting-input"/>
 -                </div>
++            <div id="reporting-tasks-tab-content" class="configuration-tab">
++                <div id="reporting-tasks-table" class="settings-table"></div>
+             </div>
+         </div>
 -        <div id="settings-buttons">
 -            <div id="settings-cancel" class="button">Cancel</div>
 -            <div id="settings-save" class="button">Apply</div>
 -        </div>
+     </div>
+ </div>

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c5d452c1/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/canvas.css
----------------------------------------------------------------------
diff --cc nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/canvas.css
index 0000000,cac2a3d..c988234
mode 000000,100644..100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/canvas.css
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/canvas.css
@@@ -1,0 -1,41 +1,42 @@@
+ /*
+  * 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.
+  */
+ @import url(reset.css);
+ @import url(processor-configuration.css);
+ @import url(processor-details.css);
+ @import url(process-group-configuration.css);
+ @import url(process-group-details.css);
+ @import url(remote-process-group-configuration.css);
+ @import url(port-configuration.css);
+ @import url(port-details.css);
+ @import url(label-configuration.css);
+ @import url(connection-configuration.css);
+ @import url(connection-details.css);
+ @import url(shell.css);
+ @import url(registration.css);
+ @import url(dialog.css);
+ @import url(new-processor-dialog.css);
++@import url(new-controller-service-dialog.css);
+ @import url(graph.css);
+ @import url(header.css);
+ @import url(main.css);
+ @import url(banner.css);
+ @import url(navigation.css);
+ @import url(flow-status.css);
+ @import url(settings.css);
+ @import url(about.css);
+ @import url(message-pane.css);
+ @import url(status-history.css);

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c5d452c1/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/main.css
----------------------------------------------------------------------
diff --cc nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/main.css
index 0000000,3afdc12..c57c6ee
mode 000000,100644..100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/main.css
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/main.css
@@@ -1,0 -1,298 +1,296 @@@
+ /*
+  * 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.
+  */
+ body { 
+     display: block;
+     font-family: Verdana, Arial, Helvetica, sans-serif;
+     font-size: 62.5%;
+     overflow: hidden;
+ }
+ 
+ #splash {
+     position: absolute;
+     top: 0px;
+     left: 0px;
+     right: 0px;
+     bottom: 0px;
+     background: #7098AD;
+     z-index: 2000;
+ }
+ 
+ #splash-img {
+     display: block;
+     padding-top: 250px;
+     margin: 0px auto;
+ }
+ 
+ #context-menu {
+     display: none;
+     background-color: #fff;
+     border: 1px solid #000;
+     position: absolute;
+     z-index: 10006;
+ }
+ 
+ div.context-menu-item {
+     cursor: pointer;
+     width: 155px;
+     height: 20px;
+     padding-top: 4px;
+     padding-left: 4px;
+ }
+ 
+ div.context-menu-item.hover {
+     color: #027fd2;
+ }
+ 
+ img.context-menu-item-img {
+     float: left;
+     width: 16px;
+     height: 16px;
+ }
+ 
+ div.context-menu-item-text {
+     width: 135px;
+     margin-left: 4px;
+     line-height: 16px;
+     float: left;
+     font-family: Arial,​ sans-serif;
+     font-size: 11px;
+ }
+ 
+ /*
+     General Styles
+ */
+ 
+ .unselectable {
+     -webkit-touch-callout: none;
+     -webkit-user-select: none;
+     -khtml-user-select: none;
+     -moz-user-select: none;
+     -ms-user-select: none;
+     user-select: none;
+ }
+ 
+ .clear {
+     clear: both;
+ }
+ 
+ .pointer {
+     cursor: pointer !important;
+ }
+ 
+ .delete td {
+     text-decoration: line-through;
+ }
+ 
+ .hidden {
+     display: none;
+ }
+ 
+ .blank, .unset, .sensitive {
+     font-style: italic;
+     font-weight: normal;
+     color: #aaa;
+ }
+ 
+ .required {
+     font-weight: bold !important;
+ }
+ 
+ div.nifi-tooltip {
+     border: 1px solid #454545;
+     background-color: #FFFFA3;
+     color: #454545;
+ }
+ 
+ .ellipsis {
+     white-space: nowrap;
+     overflow: hidden;
+ }
+ 
+ .ellipsis.multiline {
+     white-space: normal;
+ }
+ 
++input.filter-list {
++    color: #888;
++}
++
+ .table-cell {
+     overflow: hidden;
+     white-space: nowrap;
+     line-height: normal;
+     float: left;
+     margin-top: 4px;
+ }
+ 
++.collapsed {
++    background: transparent url(../images/iconTwistArrow.png) no-repeat scroll top left;
++}
++
++.expanded {
++    background: transparent url(../images/iconTwistArrow.png) no-repeat scroll top right;
++}
++
+ input[type=text], textarea {
+     background: white url(../images/bgInputText.png) repeat-x scroll top;
+     border: 1px solid #ccc;
+     font-family: Verdana;
+     font-size: 12px;
+     padding: 4px;
+     resize: none;
+ }
+ 
+ textarea {
+     overflow: hidden;
+ }
+ 
+ ul.property-info {
+     list-style-type: disc;
+     margin-left: 10px;
+ }
+ 
+ ul.property-info li {
+     padding: 0px 0px;
+     margin-left: 10px;
+ }
+ 
+ div.nf-checkbox {
+     cursor: default;
+     width: 12px;
+     height: 12px;
+     float: left;
+     margin-right: 4px;
+ }
+ 
+ div.checkbox-unchecked {
+     background: transparent url(../images/inputCheckbox.png) no-repeat scroll top left;
+ }
+ 
+ div.checkbox-checked {
+     background: transparent url(../images/inputCheckbox.png) no-repeat scroll top right;
+ }
+ 
+ div.ajax-loading {
+     background-image: url(../images/iconLoading.gif);
+ }
+ 
+ div.button-refresh {
+     background: transparent url(../images/buttonRefresh.png) no-repeat scroll top left;
+ }
+ 
+ div.button-refresh-hover {
+     background: transparent url(../images/buttonRefresh.png) no-repeat scroll top right;
+ }
+ 
+ .ui-draggable .dialog-header {
+     cursor: move;
+ }
+ 
+ /* processor status styles */
+ 
+ div.disabled {
+     float: left;
+     width: 16px;
+     height: 16px;
+     background: transparent url(../images/iconDisable.png) repeat scroll 0 0;
+ }
+ 
+ div.stopped {
+     float: left;
+     width: 16px;
+     height: 16px;
+     background: transparent url(../images/iconStop.png) repeat scroll 0 0;
+ }
+ 
+ div.running {
+     float: left;
+     width: 16px;
+     height: 16px;
+     background: transparent url(../images/iconRun.png) repeat scroll 0 0;
+ }
+ 
+ div.has-errors, div.invalid {
+     float: left;
+     width: 18px;
+     height: 16px;
+     margin-left: -2px;
+     background: transparent url(../images/iconAlert.png) repeat scroll 0 0;
+ }
+ 
+ div.transmitting {
+     float: left;
+     width: 18px;
+     height: 16px;
+     background: transparent url(../images/iconTransmissionActive.png) no-repeat center center;
+ }
+ 
+ div.not-transmitting {
+     float: left;
+     width: 18px;
+     height: 16px;
+     background: transparent url(../images/iconTransmissionInactive.png) no-repeat center center;
+ }
+ 
+ div.valid {
+     float: left;
+     width: 16px;
+     height: 16px;
+     background-color: transparent;
+ }
+ 
+ div.has-bulletins {
+     background: transparent url(../images/iconBulletin.png) repeat scroll 0 0;
+ }
+ 
+ /*
+     Styles for status/history/user tables.
+ */
+ 
 -div.expansion-button {
 -    width: 11px;
 -    height: 11px;
 -    margin-left: 5px;
 -}
 -
 -div.collapsed {
 -    background: transparent url(../images/buttonExpandCollapse.png) no-repeat scroll top left;
 -}
 -
 -div.expanded {
 -    background: transparent url(../images/buttonExpandCollapse.png) no-repeat scroll top right;
 -}
 -
+ span.label, div.label {
+     font-weight: bold;
+ }
+ 
+ div.inline-details {
+     margin-top: 10px;
+     margin-bottom: 3px;
+ }
+ 
+ div.inline-details div {
+     margin: 2px 0;
+ }
+ 
+ tr.alt-row {
+     background: #f5f5f5 none;
+ }
+ 
+ span.link {
+     cursor: pointer;
+     color: #1e373f;
+     font-weight: normal;
+ }
+ 
+ span.link-over {
+     color: #264c58;
+     text-decoration: underline;
+ }
+ 
+ span.details-title {
+     font-weight: bold;
+     font-size: 12px;
+     text-decoration: underline;
+ }

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c5d452c1/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-processor-dialog.css
----------------------------------------------------------------------
diff --cc nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-processor-dialog.css
index 0000000,5456dea..a1c77f8
mode 000000,100644..100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-processor-dialog.css
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-processor-dialog.css
@@@ -1,0 -1,168 +1,132 @@@
+ /*
+  * 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.
+  */
+ /* 
+     New processor dialog.
+ */
+ 
+ #new-processor-dialog {
+     z-index: 1301;
+     display: none;
+     width: 800px;
+     height: 450px;
+     border: 1px solid #eee;
+     line-height: normal;
+ }
+ 
 -#tag-cloud-container {
++#processor-tag-cloud-container {
+     float: left;
+     width: 190px;
+     height: 350px;
+ }
+ 
+ #processor-types-container {
+     float: left;
+     width: 588px;
+     height: 350px;
+ }
+ 
+ #processor-description-container {
+     width: 588px;
+     height: 100px;
+     margin-top: 10px;
+ }
+ 
+ #processor-type-name {
+     font-size: 12pt;
+     font-weight: bold;
+     color: #527991;
+     margin-bottom: 8px;
+     width: 588px;
+ }
+ 
+ #processor-type-description {
+     width: 588px;
+     height: 60px;
+ }
+ 
+ #processor-types-table {
+     width: 586px;
+     height: 249px;
+     border: 1px solid #666;
+ }
+ 
+ #processor-types-table-container th {
+     vertical-align: middle;
+ }
+ 
+ /*
 -    Tag cloud
++    Processor tag cloud
+ */
+ 
 -#tag-cloud {
 -    font-size: 90%;
 -    padding: 2px;
 -    margin-left: -5px;
++#processor-tag-cloud ul.tag-cloud {
+     max-height: 257px;
 -    overflow: hidden;
+ }
+ 
 -#tag-cloud li {
 -    float: left;
 -    list-style-type: none;
 -    margin: 0 3px;
 -    height: 20px;
 -    line-height: 20px;
++#processor-tag-cloud ul.tag-cloud li {
+     max-width: 180px;
 -    overflow: hidden;
 -    white-space: nowrap;
+ }
+ 
 -#tag-cloud-separator {
++#processor-tag-cloud div.tag-cloud-separator {
+     width: 180px;
 -    height: 1px;
 -    border-bottom: 1px solid #aaa;
 -    margin: 3px 0;
 -}
 -
 -#tag-filter {
 -    overflow: hidden;
+ }
+ 
 -#tag-filter li {
 -    width: 185px;
 -    height: 18px;
 -    line-height: 18px;
 -    padding: 2px;
++#processor-tag-cloud ul.tag-filter li {
++    width: 180px;
+ }
+ 
 -div.selected-tag-text {
 -    float: left;
++#processor-tag-cloud div.selected-tag-text {
+     width: 160px;
+ }
+ 
 -img.remove-selected-tag {
 -    float: left;
 -    margin-top: 1px;
 -}
 -
+ /*
+     Processor type table filter
+ */
+ 
+ #processor-type-filter-controls {
+     float: right;
+     margin-top: -35px;
+     margin-right: 2px;
+     margin-bottom: 7px;
+ }
+ 
+ #processor-type-filter-status {
+     font-size: 9px;
+     font-weight: bold;
+     color: #9f6000;
+     clear: left; 
+     line-height: normal;
+     margin-left: 5px;
+ }
+ 
+ #processor-type-filter {
+     padding: 3px 0px 1px 3px;
+     font-size: 12px;
+     height: 18px;
+     line-height: 20px;
+     width: 173px;
+     border: 1px solid #ccc;
+     margin-right: 3px;
+     float: left;
+ }
+ 
 -input.filter-list {
 -    color: #888;
 -}
 -
+ #processor-type-filter-options {
+     float: left;
+     height: 17px;
+     line-height: 17px;
+     width: 85px;
+     margin-top: 1px;
 -}
 -
 -.no-select {
 -    -webkit-user-select: none;
 -    -moz-user-select: none;
+ }

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c5d452c1/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/registration.css
----------------------------------------------------------------------
diff --cc nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/registration.css
index 0000000,d81596e..d4fdc7e
mode 000000,100644..100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/registration.css
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/registration.css
@@@ -1,0 -1,53 +1,45 @@@
+ /*
+  * 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.
+  */
+ /*
+     Registration form styles.
+ */
+ 
+ #registration-pane {
+     z-index: 1299;
+ }
+ 
+ #registration-form {
+     margin-top: 10px;
+     width: 610px;
+ }
+ 
+ #expand-registration-button {
+     width: 10px;
+     height: 10px;
+     float: left;
+     margin-right: 5px;
+ }
+ 
+ #expand-registration-text {
+     -webkit-user-select: none;
+     -moz-user-select: none;
+ }
+ 
+ #registration-justification {
+     width: 600px;
+     height: 200px;
 -}
 -
 -div.registration-collapsed {
 -    background: transparent url(../images/iconTwistArrow.png) no-repeat scroll top left;
 -}
 -
 -div.registration-expanded {
 -    background: transparent url(../images/iconTwistArrow.png) no-repeat scroll top right;
+ }

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/c5d452c1/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/settings.css
----------------------------------------------------------------------
diff --cc nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/settings.css
index 0000000,e9d78d4..6a97e0b
mode 000000,100644..100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/settings.css
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/settings.css
@@@ -1,0 -1,66 +1,152 @@@
+ /*
+  * 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.
+  */
++
+ #settings {
+     position: absolute;
+     top: 0px;
+     right: 0px;
+     bottom: 0px;
+     left: 0px;
+     display: none;
++    padding: 20px;
+ }
+ 
+ #settings-header-text {
+     height: 35px;
 -    margin-top: 20px;
 -    margin-left: 20px;
+     font-size: 16px;
+     font-weight: bold;
+ }
+ 
+ #settings-container {
 -    margin-top: -10px;
++    margin-top: 18px;
++}
++
++#new-service-or-task {
++    float: right;
++    width: 19px;
++    height: 19px;
++    margin-top: 4px;
++    cursor: pointer;
++}
++
++span.expansion-button {
++    width: 10px;
++    height: 10px;
++    float: left;
++}
++
++span.ancestor-type {
++    font-weight: bold;
++}
++
++span.ancestor-type-rollup {
++    margin-left: 3px;
++    color: #aaa;
++}
++
++/* settings tabs */
++
++#settings-tabs-container {
++    border-bottom: 2px solid #666;
++}
++
++#settings-tabs {
++    float: left;
+ }
+ 
++.settings-tab {
++    display: block;
++    padding: 0 5px;
++    height: 26px;
++    float: left;
++    color: #666;
++    background-color: #ccc;
++    border-left: 1px solid #b5b5b5;
++    border-top: 1px solid #b5b5b5;
++    border-right: 1px solid #b5b5b5;
++    margin-right: 5px;
++    text-align: center;
++    cursor: pointer;
++    line-height: 26px;
++    font-weight: bold;
++}
++
++.settings-selected-tab {
++    color: #fff;
++    background-color: #666;
++    border-left: 1px solid #666;
++    border-top: 1px solid #666;
++    border-right: 1px solid #666;
++}
++
++#settings-tab-background {
++    height: 200px;
++    margin-top: 1px;
++    background-color: transparent;
++    background: linear-gradient(to bottom, #dddddd, #ffffff);
++    filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr=#dddddd, endColorstr=#ffffff);
++}
++
++#settings div.configuration-tab {
++    display: none;
++}
++
++div.settings-table {
++    position: absolute;
++    top: 115px;
++    left: 25px;
++    bottom: 20px;
++    right: 25px;
++    border: 1px solid #666;
++    overflow: hidden;
++    background-color: #fff;
++}
++
++span.sorted {
++    text-decoration: underline;
++}
++
++/* general */
++
+ #general-settings {
 -    padding-left: 10px;
 -    margin-top: 15px;
++    margin-top: -190px;
+     margin-left: 10px;
+ }
+ 
+ #general-settings input, #general-settings textarea {
+     font-size: 11px !important;
+     font-family: Verdana;
+     width: 350px;
+     vertical-align: middle;
+ }
+ 
+ #data-flow-comments-field {
+     height: 100px;
+ }
+ 
+ #settings-buttons {
 -    margin-left: 260px;
++    margin-left: 304px;
+     margin-top: 10px;
+ }
+ 
 -#settings-save, #settings-cancel {
++#settings-save {
+     float: left;
+ }
+ 
+ #archive-flow-link {
+     margin-left: 10px;
+ }