+
+
+
+
+
+
+
+ WSO2 IoT App Publisher
+
+
+
+
+
+
+
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/public/manifest.json b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/public/manifest.json
new file mode 100644
index 00000000000..2a700bb50e7
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/public/manifest.json
@@ -0,0 +1,15 @@
+{
+ "short_name": "App Publisher",
+ "name": "WSO2 IoT App Publisher",
+ "icons": [
+ {
+ "src": "images/favicon.png",
+ "sizes": "16x16",
+ "type": "image/png"
+ }
+ ],
+ "start_url": "./index.html",
+ "display": "standalone",
+ "theme_color": "#000000",
+ "background_color": "#ffffff"
+}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/App.css b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/App.css
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/App.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/App.js
new file mode 100644
index 00000000000..faa4e14359d
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/App.js
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 './App.css'
+import React, {Component} from 'react';
+import createHistory from 'history/createHashHistory';
+import {HashRouter as Router, Redirect, Route, Switch} from 'react-router-dom'
+import {BaseLayout, ApplicationCreate, Login, NotFound, PublisherOverview, PlatformCreate} from './components'
+
+const history = createHistory({basename: '/publisher'});
+
+/**
+ * This component defines the layout and the routes for the app.
+ * All the content will be loaded inside the Base component.
+ * The base component includes the Core layout and the routers according to which the content will be displayed.
+ *
+ * The Router and Route components.
+ * The Router and Route is used for navigation.
+ * We specify the component which needs to be rendered for an URL.
+ * Ex: When navigate to publisher/overview, the overview component will be rendered inside the main layout.
+ * */
+
+class Base extends Component {
+ constructor() {
+ super();
+ this.state = {
+ user: "admin"
+ }
+ }
+
+ render() {
+ if (this.state.user) {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+ }
+
+ return ()
+ }
+}
+
+/**
+ * This component is referred by the index.js to initiate the application.
+ * */
+class Publisher extends Component {
+ render() {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
+
+Publisher.propTypes = {
+ user: Object
+};
+
+export default Publisher;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/App.test.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/App.test.js
new file mode 100644
index 00000000000..79b7f3f6659
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/App.test.js
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 React from 'react';
+import ReactDOM from 'react-dom';
+import App from './App';
+
+it('renders without crashing', () => {
+ const div = document.createElement('div');
+ ReactDOM.render(, div);
+});
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/actions/ApplicationActions.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/actions/ApplicationActions.js
new file mode 100644
index 00000000000..9eb827eb700
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/actions/ApplicationActions.js
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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.
+ */
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/actions/PlatformActions.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/actions/PlatformActions.js
new file mode 100644
index 00000000000..9eb827eb700
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/actions/PlatformActions.js
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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.
+ */
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/actions/ReviewActions.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/actions/ReviewActions.js
new file mode 100644
index 00000000000..9eb827eb700
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/actions/ReviewActions.js
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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.
+ */
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/api/AuthHandler.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/api/AuthHandler.js
new file mode 100644
index 00000000000..9eb827eb700
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/api/AuthHandler.js
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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.
+ */
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/api/Endpoints.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/api/Endpoints.js
new file mode 100644
index 00000000000..e3e76b69c23
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/api/Endpoints.js
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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.
+ */
+
+/**
+ * Defines the list of App Manager APIs.
+ * */
\ No newline at end of file
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/common/constants.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/common/constants.js
new file mode 100644
index 00000000000..9eb827eb700
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/common/constants.js
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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.
+ */
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/common/dispatcher.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/common/dispatcher.js
new file mode 100644
index 00000000000..96803dfb203
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/common/dispatcher.js
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 {Dispatcher} from 'flux';
+
+export default new Dispatcher();
+
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/ApplicationCreate.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/ApplicationCreate.js
new file mode 100644
index 00000000000..849a994663f
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/ApplicationCreate.js
@@ -0,0 +1,231 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 React, {Component} from 'react';
+import Dialog from 'material-ui/Dialog';
+import {withRouter} from 'react-router-dom';
+import {Step1, Step2, Step3} from './Forms';
+import FlatButton from 'material-ui/FlatButton';
+import RaisedButton from 'material-ui/RaisedButton';
+import {Card, CardActions, CardTitle} from 'material-ui/Card';
+import {Step, StepLabel, Stepper,} from 'material-ui/Stepper';
+
+
+/**
+ * The App Create Component.
+ *
+ * Application creation is handled through a Wizard. (We use Material UI Stepper.)
+ *
+ * In each step, data will be set to the state separately.
+ * When the wizard is completed, data will be arranged and sent to the api.
+ * */
+class ApplicationCreate extends Component {
+ constructor() {
+ super();
+ this.setStepData.bind(this);
+ this.removeStepData.bind(this);
+ this.handleSubmit.bind(this);
+ this.handleCancel.bind(this);
+ this.handleYes.bind(this);
+ this.handleNo.bind(this);
+ this.state = {
+ finished: false,
+ stepIndex: 0,
+ stepData: [],
+ isDialogOpen: false
+ };
+ }
+
+ /**
+ * Handles next button click event.
+ * */
+ handleNext = () => {
+ const {stepIndex} = this.state;
+ this.setState({
+ stepIndex: stepIndex + 1,
+ finished: stepIndex >= 2,
+ });
+ };
+
+ /**
+ * Handles form submit.
+ * */
+ handleSubmit = () => {
+ console.log(this.state.stepData);
+ };
+
+ /**
+ * Handles cancel button click event.
+ * This will show a confirmation dialog to cancel the application creation process.
+ * */
+ handleCancel = () => {
+ this.setState({isDialogOpen: true});
+ };
+
+ /**
+ * Handled [ < Prev ] button click.
+ * This clears the data in the current step and returns to the previous step.
+ * */
+ handlePrev = () => {
+ const {stepIndex} = this.state;
+ if (stepIndex > 0) {
+ this.removeStepData();
+ this.setState({stepIndex: stepIndex - 1});
+ }
+ };
+
+ /**
+ * Saves form data in each step in to the state.
+ * */
+ setStepData = (step, data) => {
+ console.log(step, data, this.state.stepData);
+ let tmpStepData = this.state.stepData;
+ tmpStepData.push({step: step, data: data});
+
+ this.setState({stepData: tmpStepData})
+ };
+
+ /**
+ * Remove the last data point
+ * */
+ removeStepData = () => {
+ let tempData = this.state.stepData;
+ tempData.pop();
+ this.setState({stepData: tempData});
+ };
+
+ /**
+ * Handles the Yes button in app creation cancellation dialog.
+ * Clears all the form data and reset the wizard.
+ * */
+ handleYes = () => {
+ this.setState({finished: false, stepIndex: 0, stepData: [], isDialogOpen: false});
+ };
+
+ /**
+ * Handles No button in app creation cancellation dialog.
+ * Returns to the same step.
+ * */
+ handleNo = () => {
+ this.setState({isDialogOpen: false});
+ };
+
+ /**
+ * Defines all the Steps in the stepper. (Wizard)
+ *
+ * Extension Point: If any extra steps needed, follow the instructions below.
+ * 1. Create the required form ./Forms directory.
+ * 2. Add defined case statements.
+ * 3. Define the Step in render function.
+ *
+ * */
+ getStepContent(stepIndex) {
+ switch (stepIndex) {
+ case 0:
+ return ;
+ case 1:
+ return ;
+ case 2:
+ return ;
+ default:
+ return 'You\'re a long way from home sonny jim!';
+ }
+ }
+
+
+ render() {
+ const {finished, stepIndex} = this.state;
+ const contentStyle = {margin: '0 16px'};
+
+ /**
+ * Defines the dialog box actions. [Yes][No]
+ * */
+ const actions = [
+ ,
+ ,
+ ];
+
+
+ return (
+
);
+ }
+}
+
+export default withRouter(ApplicationCreate);
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/ApplicationListing.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/ApplicationListing.js
new file mode 100644
index 00000000000..d81c32a7905
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/ApplicationListing.js
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 React, {Component} from 'react';
+import {withRouter} from 'react-router-dom';
+
+
+/**
+ * Application List Component.
+ * */
+class ApplicationListing extends Component{
+
+}
+
+export default withRouter(ApplicationListing);
\ No newline at end of file
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/ApplicationView.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/ApplicationView.js
new file mode 100644
index 00000000000..3959357f2ec
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/ApplicationView.js
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 React, {Component} from 'react';
+import {withRouter} from 'react-router-dom';
+
+/**
+ * Application view component.
+ * Shows the details of the application.
+ * */
+class ApplicationView extends Component{
+
+}
+
+export default withRouter(ApplicationView);
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/Forms/Step1.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/Forms/Step1.js
new file mode 100644
index 00000000000..8ce132ba24d
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/Forms/Step1.js
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 React, {Component} from 'react';
+import MenuItem from 'material-ui/MenuItem';
+import TextField from 'material-ui/TextField';
+import FlatButton from 'material-ui/FlatButton';
+import SelectField from 'material-ui/SelectField';
+import RaisedButton from 'material-ui/RaisedButton';
+
+/**
+ * The first step of the application creation wizard.
+ * This contains following components:
+ * * Application Title
+ * * Store Type
+ * * Application Platform
+ *
+ * Parent Component: Create
+ * Props:
+ * 1. handleNext: {type: function, Invokes handleNext function of parent component}
+ * 2. setData : {type: function, Sets current form data to the state of the parent component}
+ * 3. removeData: {type: function, Invokes the removeStepData function click of parent}
+ * */
+class Step1 extends Component {
+ constructor() {
+ super();
+ this.state = {
+ finished: false,
+ stepIndex: 0,
+ store: 1,
+ platform: 1,
+ stepData: []
+ };
+ }
+
+ /**
+ * Invokes the handleNext function in Create component.
+ * */
+ handleNext = () => {
+ this.props.handleNext();
+ };
+
+ /**
+ * Persist the current form data to the state.
+ * */
+ setStepData() {
+ this.props.setData("step1", {step: "Dfds"});
+ this.handleNext.bind(this);
+ }
+
+ /**
+ * Handles Next button click.
+ * Validates the form.
+ * Sets the data to the state.
+ * Invokes the handleNext method of Create component.
+ * */
+ handleClick() {
+ this.setStepData();
+ this.handleNext();
+ }
+
+ /**
+ * Triggers when changing the Platform selection.
+ * */
+ onChangePlatform = (event, index, value) => {
+ this.setState({platform: value});
+ };
+
+ /**
+ * Triggers when changing the Store selection.
+ * */
+ onChangeStore = (event, index, value) => {
+ this.setState({store: value});
+ };
+
+ render() {
+ const contentStyle = {margin: '0 16px'};
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
+
+export default Step1;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/Forms/Step2.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/Forms/Step2.js
new file mode 100644
index 00000000000..67c709392b2
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/Forms/Step2.js
@@ -0,0 +1,209 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 Chip from 'material-ui/Chip';
+import React, {Component} from 'react';
+import MenuItem from 'material-ui/MenuItem';
+import TextField from 'material-ui/TextField';
+import FlatButton from 'material-ui/FlatButton';
+import SelectField from 'material-ui/SelectField';
+import RaisedButton from 'material-ui/RaisedButton';
+
+/**
+ * The Second step of application create wizard.
+ * This contains following components.
+ * * App Title
+ * * Short Description
+ * * Application Description
+ * * Application Visibility
+ * * Application Tags : {Used Material UI Chip component}
+ * * Application Category.
+ * * Platform Specific properties.
+ * * Screenshots
+ * * Banner
+ * * Icon
+ *
+ * Parent Component: Create
+ * Props:
+ * * handleNext : {type: function, Invokes handleNext function in Parent.}
+ * * handlePrev : {type: function, Invokes handlePrev function in Parent}
+ * * setData : {type: function, Invokes setStepData function in Parent}
+ * * removeData : {type: Invokes removeStepData function in Parent}
+ * */
+class Step2 extends Component {
+ constructor() {
+ super();
+ this.state = {
+ tags: [],
+ defValue: "",
+ category: 1
+ };
+
+ this.styles = {
+ chip: {
+ margin: 4,
+ },
+ wrapper: {
+ display: 'flex',
+ flexWrap: 'wrap',
+ },
+ };
+
+ }
+
+ /**
+ * Create a tag on Enter key press and set it to the state.
+ * Clears the tags text field.
+ * Chip gets two parameters: Key and value.
+ * */
+ addTags(event) {
+ let tags = this.state.tags;
+ if (event.charCode === 13) {
+ event.preventDefault();
+ tags.push({key: Math.floor(Math.random() * 1000), value: event.target.value});
+ this.setState({tags, defValue: ""}, console.log(this.state.tags));
+ }
+ }
+
+ /**
+ *
+ * */
+ handleTagChange(event) {
+ let defaultValue = this.state.defValue;
+ defaultValue = event.target.value;
+ this.setState({defValue: defaultValue})
+ }
+
+ /**
+ * Invokes the handleNext function in Create component.
+ * */
+ handleNext() {
+ this.props.handleNext();
+ }
+
+ /**
+ * Invokes the handlePrev function in Create component.
+ * */
+ handlePrev() {
+ this.props.handlePrev();
+ }
+
+ /**
+ * Handles Chip delete function.
+ * Removes the tag from state.tags
+ * */
+ handleRequestDelete = (key) => {
+ this.chipData = this.state.tags;
+ const chipToDelete = this.chipData.map((chip) => chip.key).indexOf(key);
+ this.chipData.splice(chipToDelete, 1);
+ this.setState({tags: this.chipData});
+ };
+
+ /**
+ * Creates Chip array from state.tags.
+ * */
+ renderChip(data) {
+ console.log(data);
+ return (
+ this.handleRequestDelete(data.key)}
+ style={this.styles.chip}
+ >
+ {data.value}
+
+ );
+ }
+
+ render() {
+ const contentStyle = {margin: '0 16px'};
+ return (
+
+
+
+
+
+
+
+
+
+ {this.state.tags.map(this.renderChip, this)}
+
+
+
+
+
+ {/*Platform Specific Properties.*/}
+
+ fdfdfd
+
+
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
+
+export default Step2;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/Forms/Step3.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/Forms/Step3.js
new file mode 100644
index 00000000000..dc3e912a9ca
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/Forms/Step3.js
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 React, {Component} from 'react';
+import Toggle from 'material-ui/Toggle';
+import MenuItem from 'material-ui/MenuItem';
+import TextField from 'material-ui/TextField';
+import FlatButton from 'material-ui/FlatButton';
+import SelectField from 'material-ui/SelectField';
+import RaisedButton from 'material-ui/RaisedButton';
+
+/**
+ * The Third step of application create wizard. {Application Release Step}
+ * This step is not compulsory.
+ *
+ * When click finish, user will prompt to confirm the application creation.
+ * User can go ahead and create the app or cancel.
+ *
+ * This contains following components:
+ * * Toggle to select application release. Un-hides the Application Release form.
+ *
+ * Application Release Form.
+ * * Release Channel
+ * * Application Version
+ * * Upload component for application.
+ *
+ * Parent Component: Create
+ * Props:
+ * * handleFinish : {type: function, Invokes handleNext function in Parent.}
+ * * handlePrev : {type: function, Invokes handlePrev function in Parent}
+ * * setData : {type: function, Invokes setStepData function in Parent}
+ * * removeData : {type: Invokes removeStepData function in Parent}
+ * */
+class Step3 extends Component {
+ constructor() {
+ super();
+ this.state = {
+ showForm: false,
+ releaseChannel: 1
+ }
+ }
+
+ /**
+ * Handles finish button click.
+ * This invokes handleNext function in parent component.
+ * */
+ handleFinish() {
+ this.props.handleFinish();
+ }
+
+ /**
+ * Invokes Prev button click.
+ * */
+ handlePrev() {
+ this.props.handlePrev();
+ }
+
+ /**
+ * Handles release application selection.
+ * */
+ handleToggle() {
+ let hide = this.state.showForm;
+ this.setState({showForm: !hide});
+ }
+
+
+ render() {
+ const contentStyle = {margin: '0 16px'};
+ return (
+
+
+
+
+ {/*If toggle is true, the release form will be shown.*/}
+ {!this.state.showForm ? :
+
+
+
+
+
+
+
}
+
+
+
+
+
+
+
+ );
+ }
+}
+
+export default Step3;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/Forms/index.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/Forms/index.js
new file mode 100644
index 00000000000..9f5ad0bdacd
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Application/Forms/index.js
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 Step1 from './Step1';
+import Step2 from './Step2';
+import Step3 from './Step3';
+
+export {Step1, Step2, Step3};
\ No newline at end of file
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Base/BaseLayout.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Base/BaseLayout.js
new file mode 100644
index 00000000000..1916005a0af
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Base/BaseLayout.js
@@ -0,0 +1,164 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 Badge from 'material-ui/Badge';
+import React, {Component} from 'react';
+import AppBar from 'material-ui/AppBar';
+import Drawer from 'material-ui/Drawer';
+import {withRouter} from 'react-router-dom';
+import IconButton from 'material-ui/IconButton';
+import {List, ListItem} from 'material-ui/List';
+import Apps from 'material-ui/svg-icons/navigation/apps';
+import Add from 'material-ui/svg-icons/content/add-circle';
+import Feedback from 'material-ui/svg-icons/action/feedback';
+import Dashboard from 'material-ui/svg-icons/action/dashboard';
+import DevicesOther from 'material-ui/svg-icons/hardware/devices-other';
+import NotificationsIcon from 'material-ui/svg-icons/social/notifications';
+import ActionAccountCircle from 'material-ui/svg-icons/action/account-circle';
+
+/**
+ * Base Layout:
+ * App bar
+ * Left Navigation
+ * Middle content.
+ * */
+class BaseLayout extends Component {
+
+ constructor() {
+ super();
+ this.state = {
+ notifications: 0,
+ user: 'Admin'
+ }
+ }
+
+ componentWillMount() {
+
+ }
+
+ handleApplicationClick() {
+ this.handleHistory('/assets/apps');
+ }
+
+ handleOverviewClick() {
+ this.handleHistory('/overview');
+ }
+
+ handleApplicationCreateClick() {
+ this.handleHistory('/assets/apps/create');
+ }
+
+ handlePlatformClick() {
+ this.handleHistory('/assets/platforms');
+ }
+
+ handlePlatformCreateClick() {
+ this.handleHistory('/assets/platforms/create');
+ }
+
+ handleReviewClick() {
+ this.handleHistory('/assets/reviews');
+ }
+
+ /**
+ * The method to update the history.
+ * to: The URL to route.
+ * */
+ handleHistory(to) {
+ this.props.history.push(to);
+ }
+
+ render() {
+ return (
+
+ );
+ }
+
+}
+
+export default withRouter(BaseLayout);
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Error/NotFound.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Error/NotFound.js
new file mode 100644
index 00000000000..81a1b0320b2
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Error/NotFound.js
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 React, {Component} from 'react';
+
+/**
+ * Error page.
+ * */
+class Error extends Component {
+
+ constructor() {
+ super();
+ }
+
+ render() {
+ return (
+
+ 404 not found
+
+ );
+ }
+}
+
+export default Error;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Overview/PublisherOverview.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Overview/PublisherOverview.js
new file mode 100644
index 00000000000..c9640bab151
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Overview/PublisherOverview.js
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 React, {Component} from 'react';
+
+/**
+ *
+ * ***NEW***
+ * The Publisher overview component.
+ * This component could be used to view app analytics.
+ * i.e number of overall downloads, ratings ect.
+ * */
+class PublisherOverview extends Component {
+
+ constructor() {
+ super();
+ }
+
+ componentWillMount() {
+ }
+
+ render() {
+
+ return (
+
+
+ Overview
+
+ );
+ }
+}
+
+export default PublisherOverview;
\ No newline at end of file
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Platform/PlatformCreate.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Platform/PlatformCreate.js
new file mode 100644
index 00000000000..0928586b5af
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Platform/PlatformCreate.js
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 React, {Component} from 'react';
+
+/**
+ * Platform Create component
+ * */
+class PlatformCreate extends Component {
+
+ constructor() {
+ super();
+ }
+
+ render() {
+ return (
+
+ Create Platform
+
+ );
+ }
+}
+
+export default PlatformCreate;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Platform/PlatformListing.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Platform/PlatformListing.js
new file mode 100644
index 00000000000..e51137e453a
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Platform/PlatformListing.js
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 React, {Component} from 'react';
+
+/**
+ * Platform Listing component.
+ * */
+class PlatformListing extends Component {
+
+ constructor() {
+ super();
+ }
+
+ render() {
+ return (
+
+ Platform View
+
+ );
+ }
+}
+
+export default PlatformListing;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Platform/PlatformView.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Platform/PlatformView.js
new file mode 100644
index 00000000000..dce6e9f716d
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Platform/PlatformView.js
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 React, {Component} from 'react';
+
+/**
+ * Platform view component.
+ * */
+class PlatformView extends Component {
+
+ constructor() {
+ super();
+ }
+
+ render() {
+ return (
+
+ Platform View
+
+ );
+ }
+}
+
+export default PlatformView;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Reviews/ReviewListing.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Reviews/ReviewListing.js
new file mode 100644
index 00000000000..2575b736f7b
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Reviews/ReviewListing.js
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 React, {Component} from 'react';
+
+/**
+ * Review Listing.
+ * */
+class ReviewListing extends Component {
+
+ constructor() {
+ super();
+ }
+
+ render() {
+ return (
+
+ Reviews List
+
+ );
+ }
+}
+
+export default ReviewListing;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Reviews/ReviewView.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Reviews/ReviewView.js
new file mode 100644
index 00000000000..da5bdac6070
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/Reviews/ReviewView.js
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 React, {Component} from 'react';
+
+/**
+ * Review details view.
+ * */
+class ReviewView extends Component {
+
+ constructor() {
+ super();
+ }
+
+ render() {
+ return (
+
+ Review
+
+ );
+ }
+}
+
+export default ReviewView;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/UIComponents/DataTable.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/UIComponents/DataTable.js
new file mode 100644
index 00000000000..649d93f32be
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/UIComponents/DataTable.js
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 React, {Component} from 'react';
+
+/**
+ * Error page.
+ * */
+class DataTable extends Component {
+
+ constructor() {
+ super();
+ }
+
+ render() {
+ return (
+
+ Data Table
+
+ );
+ }
+}
+
+export default DataTable;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/User/Login/Login.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/User/Login/Login.js
new file mode 100644
index 00000000000..72255be8dd5
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/User/Login/Login.js
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 qs from 'qs';
+import React, {Component} from 'react';
+import Checkbox from 'material-ui/Checkbox';
+import {Redirect, Switch} from 'react-router-dom';
+import RaisedButton from 'material-ui/RaisedButton';
+import {Card, CardActions, CardTitle} from 'material-ui/Card';
+import {TextValidator, ValidatorForm} from 'react-material-ui-form-validator';
+
+//todo: remove the {TextValidator, ValidatorForm} and implement it manually.
+
+
+/**
+ * The Login Component.
+ *
+ * This component contains the Login form and methods to handle field change events.
+ * The user name and password will be set to the state and sent to the api.
+ *
+ * If the user is already logged in, it will redirect to the last point where the user was.
+ * */
+class Login extends Component {
+ constructor() {
+ super();
+ this.state = {
+ isLoggedIn: true,
+ referrer: "/",
+ userName: "",
+ password: "",
+ rememberMe: true
+ }
+ }
+
+ componentDidMount() {
+ let queryString = this.props.location.search;
+ console.log(queryString);
+ queryString = queryString.replace(/^\?/, '');
+ /* With QS version up we can directly use {ignoreQueryPrefix: true} option */
+ let params = qs.parse(queryString);
+ if (params.referrer) {
+ this.setState({referrer: params.referrer});
+ }
+ }
+
+ handleLogin(event) {
+ event.preventDefault();
+ }
+
+ /**
+ * Handles the username field change event.
+ * */
+ onUserNameChange(event) {
+ this.setState(
+ {
+ userName: event.target.value
+ }
+ );
+ }
+
+ /**
+ * Handles the password field change event.
+ * */
+ onPasswordChange(event) {
+ this.setState(
+ {
+ password: event.target.value
+ }
+ );
+ }
+
+ /**
+ * Handles the remember me check.
+ * */
+ handleRememberMe() {
+ this.setState(
+ {
+ rememberMe: !this.state.rememberMe
+ }
+ );
+ }
+
+ render() {
+
+ if (!this.state.isLoggedIn) {
+ return (
+
);
+ } else {
+ return (
+
+
+
+ );
+ }
+ }
+}
+
+export default Login;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/index.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/index.js
new file mode 100644
index 00000000000..3ed7d23ef64
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/components/index.js
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 Login from './User/Login/Login';
+import NotFound from './Error/NotFound';
+import BaseLayout from './Base/BaseLayout';
+import PlatformCreate from './Platform/PlatformCreate';
+import PublisherOverview from './Overview/PublisherOverview';
+import ApplicationCreate from './Application/ApplicationCreate';
+
+/**
+ * Contains all UI components related to Application, Login and Platform
+ */
+
+export {Login, BaseLayout, ApplicationCreate, NotFound, PublisherOverview, PlatformCreate};
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/index.css b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/index.css
new file mode 100644
index 00000000000..b4cc7250b98
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/index.css
@@ -0,0 +1,5 @@
+body {
+ margin: 0;
+ padding: 0;
+ font-family: sans-serif;
+}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/index.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/index.js
new file mode 100644
index 00000000000..e94b5727376
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/index.js
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 './index.css';
+import React from 'react';
+import Publisher from './App';
+import ReactDOM from 'react-dom';
+import registerServiceWorker from './registerServiceWorker';
+import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
+
+/**
+ * This is the base js file of the app. All the content will be rendered in the root element.
+ * */
+ReactDOM.render(, document.getElementById('root'));
+registerServiceWorker();
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/registerServiceWorker.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/registerServiceWorker.js
new file mode 100644
index 00000000000..94bc5f9982c
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/registerServiceWorker.js
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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.
+ */
+
+// In production, we register a service worker to serve assets from local cache.
+
+// This lets the app load faster on subsequent visits in production, and gives
+// it offline capabilities. However, it also means that developers (and users)
+// will only see deployed updates on the "N+1" visit to a page, since previously
+// cached resources are updated in the background.
+
+// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.
+// This link also includes instructions on opting out of this behavior.
+
+const isLocalhost = Boolean(
+ window.location.hostname === 'localhost' ||
+ // [::1] is the IPv6 localhost address.
+ window.location.hostname === '[::1]' ||
+ // 127.0.0.1/8 is considered localhost for IPv4.
+ window.location.hostname.match(
+ /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
+ )
+);
+
+export default function register() {
+ if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {
+ // The URL constructor is available in all browsers that support SW.
+ const publicUrl = new URL(process.env.PUBLIC_URL, window.location);
+ if (publicUrl.origin !== window.location.origin) {
+ // Our service worker won't work if PUBLIC_URL is on a different origin
+ // from what our page is served on. This might happen if a CDN is used to
+ // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374
+ return;
+ }
+
+ window.addEventListener('load', () => {
+ const swUrl = `${process.env.PUBLIC_URL}/publisher/service-worker.js`;
+
+ if (!isLocalhost) {
+ // Is not local host. Just register service worker
+ registerValidSW(swUrl);
+ } else {
+ // This is running on localhost. Lets check if a service worker still exists or not.
+ checkValidServiceWorker(swUrl);
+ }
+ });
+ }
+}
+
+function registerValidSW(swUrl) {
+ navigator.serviceWorker
+ .register(swUrl)
+ .then(registration => {
+ registration.onupdatefound = () => {
+ const installingWorker = registration.installing;
+ installingWorker.onstatechange = () => {
+ if (installingWorker.state === 'installed') {
+ if (navigator.serviceWorker.controller) {
+ // At this point, the old content will have been purged and
+ // the fresh content will have been added to the cache.
+ // It's the perfect time to display a "New content is
+ // available; please refresh." message in your web app.
+ console.log('New content is available; please refresh.');
+ } else {
+ // At this point, everything has been precached.
+ // It's the perfect time to display a
+ // "Content is cached for offline use." message.
+ console.log('Content is cached for offline use.');
+ }
+ }
+ };
+ };
+ })
+ .catch(error => {
+ console.error('Error during service worker registration:', error);
+ });
+}
+
+function checkValidServiceWorker(swUrl) {
+ // Check if the service worker can be found. If it can't reload the page.
+ fetch(swUrl)
+ .then(response => {
+ // Ensure service worker exists, and that we really are getting a JS file.
+ if (
+ response.status === 404 ||
+ response.headers.get('content-type').indexOf('javascript') === -1
+ ) {
+ // No service worker found. Probably a different app. Reload the page.
+ navigator.serviceWorker.ready.then(registration => {
+ registration.unregister().then(() => {
+ window.location.reload();
+ });
+ });
+ } else {
+ // Service worker found. Proceed as normal.
+ registerValidSW(swUrl);
+ }
+ })
+ .catch(() => {
+ console.log(
+ 'No internet connection found. App is running in offline mode.'
+ );
+ });
+}
+
+export function unregister() {
+ if ('serviceWorker' in navigator) {
+ navigator.serviceWorker.ready.then(registration => {
+ registration.unregister();
+ });
+ }
+}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/stores/ApplicationStore.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/stores/ApplicationStore.js
new file mode 100644
index 00000000000..8d3763b6f00
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/stores/ApplicationStore.js
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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.
+ */
+
+export class ApplicationStore {};
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/stores/PlatformStore.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/stores/PlatformStore.js
new file mode 100644
index 00000000000..51babc360d5
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/stores/PlatformStore.js
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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.
+ */
+export class PlatformStore{};
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/stores/ReviewStore.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/stores/ReviewStore.js
new file mode 100644
index 00000000000..08ce7b2504f
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/stores/ReviewStore.js
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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.
+ */
+
+export class ReviewStore{};
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/stores/index.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/stores/index.js
new file mode 100644
index 00000000000..74161552173
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/src/stores/index.js
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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 ReviewStore from './ReviewStore';
+import PlatformStore from './PlatformStore';
+import ApplicationStore from './ApplicationStore';
+
+
+export {ApplicationStore, PlatformStore, ReviewStore};
\ No newline at end of file
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/webpack.config.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/webpack.config.js
new file mode 100644
index 00000000000..c6483f4aaa0
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/src/main/resources/publisher/webpack.config.js
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. 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.
+ */
+var path = require('path');
+
+const config = {
+ entry: {
+ index: './src/index.js'
+ },
+ output: {
+ path: path.resolve(__dirname, 'public/dist'),
+ filename: '[name].js'
+ },
+ devtool: "source-map",
+ plugins: [],
+ watch: false,
+ module: {
+ rules: [
+ {
+ test: /\.(js|jsx)$/,
+ exclude: /node_modules/,
+ use: [
+ {
+ loader: 'babel-loader',
+ options: {
+ presets: ['es2015', 'react'],
+ plugins: ['transform-class-properties']
+ }
+ }
+ ]
+ },
+ {
+ test: /\.css$/,
+ use: [ 'style-loader', 'css-loader' ]
+ },
+ {
+ test: /\.less$/,
+ use: [{
+ loader: "style-loader" // creates style nodes from JS strings
+ }, {
+ loader: "css-loader" // translates CSS into CommonJS
+ }, {
+ loader: "less-loader" // compiles Less to CSS
+ }]
+ }
+ ]
+ }
+};
+
+if (process.env.NODE_ENV === "development") {
+ config.watch = true;
+}
+
+module.exports = config;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/pom.xml b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/pom.xml
new file mode 100644
index 00000000000..55d169e8de7
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.ui/pom.xml
@@ -0,0 +1,126 @@
+
+
+
+ 4.0.0
+
+
+ org.wso2.carbon.devicemgt
+ application-mgt
+ 3.0.46-SNAPSHOT
+
+ org.wso2.carbon.device.application.mgt.store.ui
+ 3.0.46-SNAPSHOT
+
+
+
+
+
+
+
+ org.wso2.maven
+ carbon-p2-plugin
+ ${carbon.p2.plugin.version}
+
+
+ 4-p2-feature-generation
+ package
+
+ p2-feature-gen
+
+
+ org.wso2.carbon.device.application.mgt.store
+ ../../etc/feature.properties
+
+
+ org.wso2.carbon.p2.category.type:server
+
+ org.eclipse.equinox.p2.type.group:false
+
+
+
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.5.0
+
+
+ npm install (initialize)
+
+ exec
+
+ initialize
+
+ ${basedir}/src/main/resources/store
+ ${npm.executable}
+
+ install
+
+
+
+
+ npm run build (compile)
+
+ exec
+
+ compile
+
+ ${basedir}/src/main/resources/publisher
+ ${npm.executable}
+
+ run
+ ${npm.build.command}
+
+
+
+
+
+ ${npm.working.dir}
+
+
+
+
+
+
+
+ platform-windows
+
+
+ windows
+
+
+
+
+ npm.cmd
+
+
+
+
+ false
+ npm
+ build_prod
+ ./src/main/
+
+
+
\ No newline at end of file
diff --git a/components/application-mgt/pom.xml b/components/application-mgt/pom.xml
index 9770fd06432..61523a4ba9f 100644
--- a/components/application-mgt/pom.xml
+++ b/components/application-mgt/pom.xml
@@ -37,7 +37,7 @@
org.wso2.carbon.device.application.mgt.coreorg.wso2.carbon.device.application.mgt.commonorg.wso2.carbon.device.application.mgt.api
- org.wso2.carbon.device.application.mgt.ui
+ org.wso2.carbon.device.application.mgt.publisher.ui
diff --git a/features/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui.feature/pom.xml b/features/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui.feature/pom.xml
new file mode 100644
index 00000000000..3bb9936115d
--- /dev/null
+++ b/features/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui.feature/pom.xml
@@ -0,0 +1,33 @@
+
+
+
+ 4.0.0
+
+
+ org.wso2.carbon.devicemgt
+ application-mgt-feature
+ 3.0.46-SNAPSHOT
+
+ org.wso2.carbon.device.application.mgt.publisher.ui.feature
+ 3.0.46-SNAPSHOT
+
+
+
\ No newline at end of file
diff --git a/features/application-mgt/org.wso2.carbon.device.application.mgt.store.ui.feature/pom.xml b/features/application-mgt/org.wso2.carbon.device.application.mgt.store.ui.feature/pom.xml
new file mode 100644
index 00000000000..521c1665051
--- /dev/null
+++ b/features/application-mgt/org.wso2.carbon.device.application.mgt.store.ui.feature/pom.xml
@@ -0,0 +1,33 @@
+
+
+
+ 4.0.0
+
+
+ org.wso2.carbon.devicemgt
+ application-mgt-feature
+ 3.0.46-SNAPSHOT
+
+ org.wso2.carbon.device.application.mgt.store.ui.feature
+ 3.0.46-SNAPSHOT
+
+
+
\ No newline at end of file
diff --git a/features/application-mgt/pom.xml b/features/application-mgt/pom.xml
index 4a39791ffc3..f70cb75863b 100644
--- a/features/application-mgt/pom.xml
+++ b/features/application-mgt/pom.xml
@@ -35,9 +35,10 @@
org.wso2.carbon.device.application.mgt.api.feature
- org.wso2.carbon.device.application.mgt.ui.feature
+
org.wso2.carbon.device.application.mgt.featureorg.wso2.carbon.device.application.mgt.server.feature
+ org.wso2.carbon.device.application.mgt.publisher.ui.feature
\ No newline at end of file