Example usage for org.apache.wicket.ajax.markup.html AjaxLink AjaxLink

List of usage examples for org.apache.wicket.ajax.markup.html AjaxLink AjaxLink

Introduction

In this page you can find the example usage for org.apache.wicket.ajax.markup.html AjaxLink AjaxLink.

Prototype

public AjaxLink(final String id) 

Source Link

Document

Construct.

Usage

From source file:edu.tsinghua.software.pages.cluster.ClusterView.java

License:Apache License

/**
 * Construtor//from  w  ww.  j  a  v  a2  s .c o m
 * @throws TException 
 * @throws InterruptedException 
 * @throws IOException 
 */
public ClusterView() throws TException, IOException, InterruptedException {
    super();
    inti();

    //add keyspace button
    add(new AjaxLink("deleteKsLinkButton") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            setResponsePage(DeleteKeyspacePage.class, pageParameters);
        }
    });

    //delete keyspace button
    add(new AjaxLink("addKsLinkButton") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            setResponsePage(AddKeyspace.class, pageParameters);
        }
    });

    // cluster detials
    final ClusterPropertyModel clusterProperty = new ClusterPropertyModel();
    this.setClusterProperties(clusterProperty);
    add(new Label("name", clusterProperty.getName()));
    add(new Label("snitch", clusterProperty.getSnitch()));
    add(new Label("partitioner", clusterProperty.getPatitioner()));
    add(new Label("schema", clusterProperty.getSchema()));
    add(new Label("api", clusterProperty.getApi()));
    add(new Label("keyspaceNum", clusterProperty.getKeyspace()));

    // keyspace viewList
    ListView keyspaceView = new ListView("keyspaceList", keyspaceNameList) {
        /**
            * 
            */
        private static final long serialVersionUID = 1L;

        protected void populateItem(ListItem item) {
            PageParameters keyspaceParameters = new PageParameters();
            keyspaceParameters.add("clusterParam", clusterName);
            keyspaceParameters.add("keyspaceParam", item.getModelObject().toString());
            item.add(new BookmarkablePageLink<Void>("keyspaceLink", KeyspacePage.class, keyspaceParameters)
                    .add(new Label("keyspaceName", item.getModel())));
        }

    };
    add(keyspaceView);

}

From source file:edu.tsinghua.software.pages.columnFamily.ColumnFamilyPage.java

License:Apache License

public ColumnFamilyPage(final PageParameters pageParameters)
        throws UnsupportedEncodingException, NotFoundException, TException, InvalidRequestException {
    super();//from   w  w w.j a v  a 2 s  . c o m
    init(pageParameters);

    //add nevigation
    add(new BookmarkablePageLink<Void>("clusterNevigation", ClusterView.class)
            .add(new Label("clusterName", clusterName)));
    PageParameters kfParam = new PageParameters(); //use this param when nevigate from column family page to keyspace page
    kfParam.add("clusterParam", clusterName);
    kfParam.add("keyspaceParam", ksName);
    add(new BookmarkablePageLink<Void>("keyspaceNevigation", KeyspacePage.class, kfParam)
            .add(new Label("ksName", ksName)));
    add(new Label("cfName", cfName));

    //for mutilanguge
    String deleteStr = "";
    String truncateStr = "";
    String dropStr = "";
    if (getSession().getLocale() == Locale.US) {
        deleteStr = "Delete";
        truncateStr = "are you sure to truncate columnFamily";
        dropStr = "are you sure to drop ";
    } else if (getSession().getLocale() == Locale.CHINA) {
        deleteStr = "";
        truncateStr = "";
        dropStr = "?";
    }

    //      add button groups      
    add(new AjaxLink("editColumnFamilyLink") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            setResponsePage(EditColumnFamily.class, pageParameters);

        }

    });
    add(new AjaxLink("browseDataLink") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            setResponsePage(ShowAllData.class, pageParameters);
        }

    });

    add(new AjaxLink("createIndexLink") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            setResponsePage(SecondaryIndexPanel.class, pageParameters);

        }

    });
    add(new AjaxLink("insertRowLink") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            setResponsePage(InsertRow.class, pageParameters);

        }

    });

    ConfirmLink deleteColunnFamilyButton = new ConfirmLink("dropColumnFamilyLink",
            dropStr + " " + this.cfName) {
        @Override
        public void onClick() {
            try {
                client.dropColumnFamily(ksName, cfName);
                setResponsePage(KeyspacePage.class, pageParameters);
            } catch (Exception e) {
                e.printStackTrace();
            }

        }

    };

    deleteColunnFamilyButton
            .add(new AttributeModifier("value", new Model(deleteStr + " '" + this.cfName + "'")));
    add(deleteColunnFamilyButton);

    // truncateColumnFamily
    add(new ConfirmLink("truncateColumnFamilyLink", truncateStr) {
        @Override
        public void onClick() {
            try {
                client.truncateColumnFamily(ksName, cfName);
            } catch (InvalidRequestException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (TException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (UnavailableException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    });

    ColumnFamilyStoreMBean cfstore = clusterManager.getColumnFamilyStatics(ksName, cfName);

    Tabs tabs = new Tabs("tabs");
    tabs.add(new CfInfoPanel("cfInfo", columnFamily));
    tabs.add(new CfStatics("cfStatics", cfstore, ksName, clusterManager));
    add(tabs);
    // index infomation
    final List<ColumnFamilyMetaData> columnFamilyMetaList = columnFamily.getMetaDatas();
    final PageableListView indexView = new PageableListView("indexRows", columnFamilyMetaList, 20) {
        /**
            * 
            */
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem item) {
            final ColumnFamilyMetaData meta = (ColumnFamilyMetaData) item.getModelObject();
            if (meta.getColumnName() != null) {
                item.add(new Label("columnName", meta.getColumnName()));
            } else {
                item.add(new Label("columnName", ""));
            }

            if (meta.getValiDationClass() != null) {
                item.add(new Label("validationClass", meta.getValiDationClass()));
            } else {
                item.add(new Label("validationClass", ""));
            }

            if (meta.getIndexName() != null) {
                item.add(new Label("indexName", meta.getIndexName()));
            } else {
                item.add(new Label("indexName", ""));
            }
            //if ther is no validation class , show nothing
            if (meta.getIndexType() != null) {
                item.add(new Label("indexType", meta.getIndexType().toString()));
            } else {
                item.add(new Label("indexType", ""));
            }

            /*    item.add(new ConfirmLink("deleteIndex", "Are you sure to delete Index?"){
                  private static final long serialVersionUID = 1L;
                    
                  @Override
                  public void onClick() {
             columnFamilyMetaList.remove(meta);
             columnFamily.setMetaDatas(columnFamilyMetaList);
             try {
                client.updateColumnFamily(ksName, columnFamily);
             } catch (InvalidRequestException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
             } catch (TException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
             } catch (SchemaDisagreementException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
             }
             setResponsePage(ColumnFamilyPage.class,pageParameters);
                     }
                             
                });*/

        }
    };
    indexView.setOutputMarkupId(true);
    this.add(indexView);

}

From source file:edu.tsinghua.software.pages.columnFamily.DeleteColumnFamilyPage.java

License:Apache License

/**
 * DeleteKeyspacePage Construct//from   w  w w . j a va2  s .co m
 * @param parameters 
 * */
public DeleteColumnFamilyPage(final PageParameters parameters) throws TException {
    init(parameters);
    //navigation
    add(new BookmarkablePageLink<Void>("clusterNavigation", ClusterView.class)
            .add(new Label("clusterName", clusterName)));
    add(new BookmarkablePageLink<Void>("keyspaceNevigation", KeyspacePage.class, parameters)
            .add(new Label("keyspaceName", keyspaceName)));

    final FeedbackPanel feedBack = new FeedbackPanel("feedback");
    feedBack.setOutputMarkupId(true);

    final CheckBoxMultipleChoice<String> listColumnFamilies = new CheckBoxMultipleChoice<String>(
            "listColumnFamilies", new Model(columnFamilySelect), columnFamilyNameList);
    listColumnFamilies.setOutputMarkupId(true);

    AjaxLink checkAll = new AjaxLink<Void>("checkAll") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            columnFamilySelect.addAll(listColumnFamilies.getChoices());
            target.add(listColumnFamilies);
        }
    };
    AjaxLink uncheckAll = new AjaxLink<Void>("uncheckAll") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            columnFamilySelect.clear();
            target.add(listColumnFamilies);
        }
    };

    Form<?> form = new Form<Void>("userForm") {
        @Override
        public void onSubmit() {
            for (String columnFamilyName : columnFamilySelect) {
                try {
                    client.dropColumnFamily(keyspaceName, columnFamilyName);
                    columnFamilyNameList.remove(columnFamilyName);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            info("drop" + columnFamilySelect);
            listColumnFamilies.setChoices(columnFamilyNameList);
            try {
                pageParameters.set("clusterParam", clusterName);
                pageParameters.set("keyspaceParam", keyspaceName);
                setResponsePage(new DeleteColumnFamilyPage(pageParameters));
            } catch (TException e) {
                // TODO Auto-generated catch block
                System.out.println("*************");
                e.printStackTrace();
            }
        }
    };

    add(feedBack);
    add(form);
    form.add(listColumnFamilies);
    form.add(checkAll);
    form.add(uncheckAll);
}

From source file:edu.tsinghua.software.pages.keyspace.DeleteKeyspacePage.java

License:Apache License

/**
 * DeleteKeyspacePage Construct//  w  w  w  . j a  va  2 s  . com
 * @param parameters 
 * */
public DeleteKeyspacePage(final PageParameters parameters) throws TException {
    init(parameters);
    //navigation
    add(new BookmarkablePageLink<Void>("clusterNavigation", ClusterView.class)
            .add(new Label("clusterName", clusterName)));
    final FeedbackPanel feedBack = new FeedbackPanel("feedback");
    feedBack.setOutputMarkupId(true);

    final CheckBoxMultipleChoice<String> listKeyspaces = new CheckBoxMultipleChoice<String>("keyspaces",
            new Model(keyspacesSelect), keyspaceNameList);
    listKeyspaces.setOutputMarkupId(true);

    AjaxLink checkAll = new AjaxLink<Void>("checkAll") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            keyspacesSelect.addAll(listKeyspaces.getChoices());
            target.add(listKeyspaces);
        }
    };
    AjaxLink uncheckAll = new AjaxLink<Void>("uncheckAll") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            keyspacesSelect.clear();
            target.add(listKeyspaces);
        }
    };

    Form<?> form = new Form<Void>("userForm") {
        @Override
        public void onSubmit() {
            for (String keyspaceName : keyspacesSelect) {
                try {
                    client.dropKeyspace(keyspaceName);
                    keyspaceNameList.remove(keyspaceName);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (getSession().getLocale() == Locale.CHINA) {
                info("" + keyspacesSelect);
                try {
                    setResponsePage(new DeleteKeyspacePage(pageParameters));
                } catch (TException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } else if (getSession().getLocale() == Locale.US) {
                info("drop keyspace" + keyspacesSelect);
                try {
                    setResponsePage(new DeleteKeyspacePage(pageParameters));
                } catch (TException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    };
    add(feedBack);
    add(form);
    form.add(listKeyspaces);
    form.add(checkAll);
    form.add(uncheckAll);
}

From source file:edu.tsinghua.software.pages.keyspace.KeyspacePage.java

License:Apache License

/**
 * KeyspacePage Contruct//from   ww w.j  a  v  a2s .  co  m
 * @param pageParameters
 * @throws InvalidRequestException 
 * @throws TException 
 * @throws NotFoundException 
 * */
public KeyspacePage(final PageParameters pageParameters)
        throws NotFoundException, TException, InvalidRequestException {
    super();
    init(pageParameters);

    // add neviation, cluster>>name
    add(new BookmarkablePageLink<Void>("clusterNevigation", ClusterView.class)
            .add(new Label("clusterName", clusterName)));
    add(new Label("keyspaceName", keyspaceName));

    ConfirmLink deleteKeyspaceButton = new ConfirmLink("deleteKslinkButton",
            "? " + this.keyspaceName + "?") {
        @Override
        public void onClick() {
            try {
                client.dropKeyspace(keyspaceName);
                setResponsePage(new KeyspacePage(pageParameters));
            } catch (Exception e) {
                e.printStackTrace();
            }
            setResponsePage(ClusterView.class, pageParameters);

        }
    };

    //for mutiple languge
    String deleteKsStr;
    if (getSession().getLocale() == Locale.US) {
        deleteKsStr = "Delete";
    } else {
        deleteKsStr = "";
    }
    deleteKeyspaceButton
            .add(new AttributeModifier("value", new Model(deleteKsStr + " '" + this.keyspaceName + "'")));
    add(deleteKeyspaceButton);

    add(new AjaxLink("editKslinkButton") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            setResponsePage(EditKeyspace.class, pageParameters);

        }
    });
    add(new AjaxLink("addCflinkButton") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            setResponsePage(AddColumnFamily.class, pageParameters);

        }
    });
    // delete ColumnFamily button
    add(new AjaxLink("deleteCflinkButton") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            setResponsePage(DeleteColumnFamilyPage.class, pageParameters);
        }
    });

    //columnFamily List
    ListView cfView = new ListView("cfList", new CfListModel(this.keyspaceName, this.client)) {
        private static final long serialVersionUID = 1L;

        protected void populateItem(ListItem item) {
            PageParameters params = new PageParameters();
            params.add("columnFamilyParam", item.getModelObject().toString());
            params.add("keyspaceParam", keyspaceName);
            params.add("clusterParam", clusterName);
            item.add(new BookmarkablePageLink<Void>("cfLink", ColumnFamilyPage.class, params)
                    .add(new Label("cfName", item.getModel())));
        }
    };

    add(cfView);
    add(new KeyspaceInfoPanel("kespaceInfo", ksDef));
    Map<String, String> keyspaceStatics = clusterManager.getKeyspaceStatics(keyspaceName);
    add(new KeyspaceStaticsPanel("kespaceStatic", keyspaceStatics));

}

From source file:eu.uqasar.web.components.StyledFeedbackPanel.java

License:Apache License

/**
 * @see org.apache.wicket.Component#Component(String)
 * //from w ww.  j  ava 2  s.com
 * @param id
 * @param filter
 */
public StyledFeedbackPanel(final String id, IFeedbackMessageFilter filter) {
    super(id);
    setOutputMarkupId(true);
    feedbackContainer = new WebMarkupContainer("feedbackdiv") {

        private static final long serialVersionUID = -8736469161089673840L;

        @Override
        protected void onConfigure() {
            setVisible(anyMessage());
        }
    };
    add(feedbackContainer);

    AjaxLink<Void> closeLink = new AjaxLink<Void>("closeLink") {

        private static final long serialVersionUID = -6970077602640428876L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            Effects.fadeOutElem(target, StyledFeedbackPanel.this.getMarkupId());
        }
    };
    feedbackContainer.add(closeLink);

    final WebMarkupContainer messagesContainer = new WebMarkupContainer("feedbackul");
    feedbackContainer.add(messagesContainer);
    messageListView = new MessageListView("messages");
    messageListView.setVersioned(false);
    messagesContainer.add(messageListView);

    if (filter != null) {
        setFilter(filter);
    }
}

From source file:eu.uqasar.web.dashboard.DashboardSharePage.java

License:Apache License

/**
 * /* w ww .  jav a2s .c  o  m*/
 * @return
 */
private AjaxLink newCancelButton() {
    AjaxLink cancelLink = new AjaxLink("cancelButton") {

        @Override
        public void onClick(AjaxRequestTarget target) {

            PageParameters params = new PageParameters();
            params.add(MESSAGE_PARAM, new StringResourceModel("canceled.message", this, null));
            params.add("id", dashboard.getId());

            // redirect to dashboard view page
            setResponsePage(DashboardViewPage.class, params);

        }
    };

    cancelLink.setOutputMarkupId(true);
    return cancelLink;
}

From source file:eu.uqasar.web.dashboard.projectqualitygooglechart.ProjectQualityGoogleChartSettingsPanel.java

License:Apache License

public ProjectQualityGoogleChartSettingsPanel(String id, IModel<ProjectQualityGoogleChartWidget> model) {
    super(id, model);

    setOutputMarkupPlaceholderTag(true);

    Form<Widget> form = new Form<>("form");

    // Get the project from the settings
    projectName = getModelObject().getSettings().get("project");

    // DropDown select for Projects
    TreeNodeService treeNodeService = null;
    try {//from w w w .j av  a2 s. c  o  m
        InitialContext ic = new InitialContext();
        treeNodeService = (TreeNodeService) ic.lookup("java:module/TreeNodeService");
        projects = treeNodeService.getAllProjectsOfLoggedInUser();
        if (projects != null && projects.size() != 0) {
            if (projectName == null || projectName.isEmpty()) {
                projectName = projects.get(0).getName();
            }
        }
        project = treeNodeService.getProjectByName(projectName);
    } catch (NamingException e) {
        e.printStackTrace();
    }
    DropDownChoice<Project> projectChoice = new DropDownChoice<>("project",
            new PropertyModel<Project>(this, "project"), projects);
    form.add(projectChoice);

    // Field for the chart type
    chartType = getModelObject().getSettings().get("chartType");
    DropDownChoice<String> choice = new DropDownChoice<>("chartType",
            new PropertyModel<String>(this, "chartType"), ProjectQualityGoogleChartWidget.TYPES);
    form.add(choice);

    form.add(new AjaxSubmitLink("submit") {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            if (project != null) {
                getModelObject().getSettings().put("chartType", chartType);
                getModelObject().getSettings().put("project", project.getName());
                Dashboard dashboard = findParent(DashboardPanel.class).getDashboard();
                DbDashboard dbdb = (DbDashboard) dashboard;
                WidgetPanel widgetPanel = findParent(WidgetPanel.class);
                ProjectQualityGoogleChartWidgetView widgetView = (ProjectQualityGoogleChartWidgetView) widgetPanel
                        .getWidgetView();
                target.add(widgetView);
                hideSettingPanel(target);

                // Do not save the default dashboard
                if (dbdb.getId() != null && dbdb.getId() != 0) {
                    dashboardContext.getDashboardPersiter().save(dashboard);
                    PageParameters params = new PageParameters();
                    params.add("id", dbdb.getId());
                    setResponsePage(DashboardViewPage.class, params);
                }
            }
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
        }

    });
    form.add(new AjaxLink<Void>("cancel") {

        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            hideSettingPanel(target);
        }

    });

    add(form);
}

From source file:eu.uqasar.web.dashboard.widget.datadeviation.DataDeviationSettingsPanel.java

License:Apache License

public DataDeviationSettingsPanel(String id, IModel<DataDeviationWidget> model) {
    super(id, model);

    setOutputMarkupPlaceholderTag(true);

    // Get the project from the settings
    projectName = getModelObject().getSettings().get("project");

    // DropDown select for Projects
    TreeNodeService treeNodeService = null;
    try {//from   w ww.  j  av a 2s. c  o m
        InitialContext ic = new InitialContext();
        treeNodeService = (TreeNodeService) ic.lookup("java:module/TreeNodeService");
        projects = treeNodeService.getAllProjectsOfLoggedInUser();
        if (projects != null && projects.size() != 0) {
            if (projectName == null || projectName.isEmpty()) {
                projectName = projects.get(0).getName();
            }
            project = treeNodeService.getProjectByName(projectName);
            recreateAllProjectTreeChildrenForProject(project);
        }
    } catch (NamingException e) {
        e.printStackTrace();
    }

    //Form and WMCs
    final Form<Widget> form = new Form<>("form");
    wmcGeneral = newWebMarkupContainer("wmcGeneral");
    form.add(wmcGeneral);

    //project
    List<String> joinedQualityParameters = ListUtils.union(ListUtils.union(OBJS, INDIS), MTRX);
    qualityParameterChoice = new DropDownChoice<String>("qualityParams",
            new PropertyModel<String>(this, "qualityParams"), joinedQualityParameters) {
        @Override
        protected void appendOptionHtml(AppendingStringBuffer buffer, String choice, int index,
                String selected) {
            super.appendOptionHtml(buffer, choice, index, selected);
            int noOfObjs = OBJS.size();
            int noOfIndis = INDIS.size();

            if (index + 1 == 1 && noOfObjs > 0) {
                buffer.append("<optgroup label='Quality Objectives'></optgroup>");
            }
            if (index + 1 == noOfObjs && noOfObjs > 0) {
                buffer.append("<optgroup label='Quality Indicators'></optgroup>");
            }
            if (index + 1 == (noOfObjs + noOfIndis) && noOfIndis > 0) {
                buffer.append("<optgroup label='Metrics'></optgroup>");
            }
        }
    };
    qualityParameterChoice.setOutputMarkupId(true);
    wmcGeneral.add(qualityParameterChoice);

    // project
    projectChoice = new DropDownChoice<>("projects", new PropertyModel<Project>(this, "project"), projects);
    projectChoice.add(new AjaxFormComponentUpdatingBehavior("onChange") {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            System.out.println(project);
            recreateAllProjectTreeChildrenForProject(project);
            qualityParameterChoice.setChoices(ListUtils.union(ListUtils.union(OBJS, INDIS), MTRX));
            target.add(qualityParameterChoice);
            target.add(wmcGeneral);

            target.add(form);
        }
    });

    wmcGeneral.setOutputMarkupId(true);
    wmcGeneral.add(projectChoice);

    form.add(new AjaxSubmitLink("submit") {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            if (project != null) {
                getModelObject().getSettings().put("qualityParams", qualityParams);
                getModelObject().getSettings().put("project", project.getName());

                Dashboard dashboard = findParent(DashboardPanel.class).getDashboard();
                DbDashboard dbdb = (DbDashboard) dashboard;
                WidgetPanel widgetPanel = findParent(WidgetPanel.class);
                DataDeviationWidgetView widgetView = (DataDeviationWidgetView) widgetPanel.getWidgetView();
                target.add(widgetView);
                hideSettingPanel(target);

                // Do not save the default dashboard
                if (dbdb.getId() != null && dbdb.getId() != 0) {
                    dashboardContext.getDashboardPersiter().save(dashboard);
                    PageParameters params = new PageParameters();
                    params.add("id", dbdb.getId());
                    setResponsePage(DashboardViewPage.class, params);
                }
            }
        }
    });
    form.add(new AjaxLink<Void>("cancel") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            hideSettingPanel(target);
        }
    });

    add(form);
}

From source file:eu.uqasar.web.dashboard.widget.jenkins.JenkinsSettingsPanel.java

License:Apache License

public JenkinsSettingsPanel(String id, IModel<JenkinsWidget> model) {
    super(id, model);

    setOutputMarkupPlaceholderTag(true);

    // Get the project from the settings
    projectName = getModelObject().getSettings().get("project");

    // DropDown select for Projects
    TreeNodeService treeNodeService = null;
    try {/*from   ww  w .  ja  v a 2 s .  c  o  m*/
        InitialContext ic = new InitialContext();
        treeNodeService = (TreeNodeService) ic.lookup("java:module/TreeNodeService");

        projects = treeNodeService.getAllProjectsOfLoggedInUser();
        if (projects != null && projects.size() != 0) {
            if (projectName == null || projectName.isEmpty()) {
                projectName = projects.get(0).getName();
            }
            project = treeNodeService.getProjectByName(projectName);
        }

    } catch (NamingException e) {
        e.printStackTrace();
    }

    //Form and WMCs
    final Form<Widget> form = new Form<>("form");

    // project
    projectChoice = new DropDownChoice<>("projects", new PropertyModel<Project>(this, "project"), projects);
    form.add(projectChoice);

    // metric
    metricChoice = new DropDownChoice<>("metrics", new PropertyModel<String>(this, "metric"),
            UQasarUtil.getJenkinsMetricNames().subList(1, 3));
    metricChoice.setRequired(true);
    form.add(metricChoice);

    //no of items
    noOfItems = getModelObject().getSettings().get("noOfItems");
    if (noOfItems == null) {
        noOfItems = "10";
    }
    List<String> numbers = Arrays.asList("10", "20", "30", "40", "50", "60", "70", "80", "90", "100");
    noOfItemsDp = new DropDownChoice<>("noOfItemsDp", new PropertyModel<String>(this, "noOfItems"), numbers);
    noOfItemsDp.setRequired(true);
    form.add(noOfItemsDp);

    form.add(new AjaxSubmitLink("submit") {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            if (project != null) {
                getModelObject().getSettings().put("project", project.getName());
                getModelObject().getSettings().put("metric", metric);
                getModelObject().getSettings().put("noOfItems", noOfItems);
                Dashboard dashboard = findParent(DashboardPanel.class).getDashboard();
                DbDashboard dbdb = (DbDashboard) dashboard;
                WidgetPanel widgetPanel = findParent(WidgetPanel.class);
                JenkinsWidgetView widgetView = (JenkinsWidgetView) widgetPanel.getWidgetView();
                target.add(widgetView);
                hideSettingPanel(target);

                // Do not save the default dashboard
                if (dbdb.getId() != null && dbdb.getId() != 0) {
                    dashboardContext.getDashboardPersiter().save(dashboard);
                    PageParameters params = new PageParameters();
                    params.add("id", dbdb.getId());
                    setResponsePage(DashboardViewPage.class, params);
                }
            }
        }
    });
    form.add(new AjaxLink<Void>("cancel") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            hideSettingPanel(target);
        }
    });

    add(form);
}