View Javadoc
1   package fr.ifremer.quadrige2.synchro.server.pages.home;
2   
3   /*-
4    * #%L
5    * Quadrige2 Core :: Quadrige2 Synchro server
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2017 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU Affero General Public License as published by
13   * the Free Software Foundation, either version 3 of the License, or
14   * (at your option) any later version.
15   * 
16   * This program is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU General Public License for more details.
20   * 
21   * You should have received a copy of the GNU Affero General Public License
22   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23   * #L%
24   */
25  
26  import fr.ifremer.quadrige2.synchro.server.application.Application;
27  import fr.ifremer.quadrige2.synchro.server.application.WebSession;
28  import fr.ifremer.quadrige2.synchro.server.pages.BasePage;
29  import fr.ifremer.quadrige2.synchro.server.pages.admin.JobManagerPage;
30  import fr.ifremer.quadrige2.synchro.server.pages.admin.ToolsPage;
31  import fr.ifremer.quadrige2.synchro.server.pages.doc.DocPage;
32  import fr.ifremer.quadrige2.synchro.server.pages.synchro.NewDatabasePage;
33  import org.apache.wicket.ajax.AjaxRequestTarget;
34  import org.apache.wicket.ajax.markup.html.form.AjaxButton;
35  import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
36  import org.apache.wicket.markup.html.form.Form;
37  import org.apache.wicket.model.CompoundPropertyModel;
38  import org.apache.wicket.model.IModel;
39  import org.apache.wicket.request.mapper.parameter.PageParameters;
40  
41  @AuthorizeInstantiation("ROLE_USER")
42  public class HomePage extends BasePage {
43      
44      /**
45       * 
46       */
47      private static final long serialVersionUID = 1L;
48  
49      public HomePage(final PageParameters parameters) {
50          super(parameters);
51          
52          IModel<HomePage> model = new CompoundPropertyModel<HomePage>(this);
53  
54          setVersioned(false);
55  
56          final boolean isUserAdmin = getWebSession().isUserAdmin();
57  
58          Form<HomePage> form = new Form<HomePage>("form", model);
59          form.setOutputMarkupId(true);
60          add(form);
61  
62          // my synchro button
63          AjaxButton synchroButton = new AjaxButton("synchroLink", form) {
64              private static final long serialVersionUID = 1L;
65  
66              @Override
67              protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
68                  setResponsePage(NewDatabasePage.class);
69              }
70          };
71          form.add(synchroButton);
72  
73          // job manager button
74          AjaxButton jobManagerButton = new AjaxButton("jobManagerLink", form) {
75              private static final long serialVersionUID = 1L;
76              @Override
77              protected void onConfigure() {
78                  super.onConfigure();
79                  setVisibilityAllowed(isUserAdmin);
80              }
81              @Override
82              protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
83                  setResponsePage(JobManagerPage.class);
84              }
85          };
86          form.add(jobManagerButton);
87  
88          // tools button
89          AjaxButton toolsButton = new AjaxButton("toolsLink", form) {
90              private static final long serialVersionUID = 1L;
91              @Override
92              protected void onConfigure() {
93                  super.onConfigure();
94                  setVisibilityAllowed(isUserAdmin);
95              }
96              @Override
97              protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
98                  setResponsePage(ToolsPage.class);
99              }
100         };
101         form.add(toolsButton);
102 
103         // docLink button
104         AjaxButton docButton = new AjaxButton("docLink", form) {
105             @Override
106             protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
107                 setResponsePage(DocPage.class);
108             }
109         };
110         form.add(docButton);
111 
112         // logout button
113         AjaxButton logoutButton = new AjaxButton("logoutLink", form) {
114             private static final long serialVersionUID = 1L;
115             @Override
116             protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
117                 WebSession session = (WebSession)getWebSession();
118                 session.invalidate();
119                 session.signOut();
120                 setResponsePage(Application.get().getHomePage());
121             }
122         };
123         form.add(logoutButton);
124 
125     }
126 }