Author: solomax
Date: Mon Aug  8 03:54:38 2016
New Revision: 1755471

URL: http://svn.apache.org/viewvc?rev=1755471&view=rev
Log:
[OPENMEETINGS-1444] admin language panel is fixed

Added:
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.html
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
      - copied, changed from r1755470, 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/images/bin_closed.png
   (with props)
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/images/bin_empty.png
   (with props)
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.html
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
      - copied, changed from r1755470, 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/images/bin_closed.png
   (with props)
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/images/bin_empty.png
   (with props)
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.html
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
      - copied, changed from r1755470, 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java
    
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/images/bin_closed.png
   (with props)
    
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/images/bin_empty.png
   (with props)
Removed:
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/images/trash.png
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/images/trash.png
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java
    
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/images/trash.png
Modified:
    
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/forms.css
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/theme.css
    
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/forms.css
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css
    
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
    
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/forms.css
    
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
 Mon Aug  8 03:54:38 2016
@@ -259,7 +259,7 @@ public class LabelDao implements IDataPr
                                labelCache.putIfAbsent(l, ll);
                        }
                }
-               List<StringLabel> result = labelCache.containsKey(l) ? 
labelCache.get(l) : new ArrayList<StringLabel>();
+               List<StringLabel> result = new 
ArrayList<>(labelCache.containsKey(l) ? labelCache.get(l) : new 
ArrayList<StringLabel>());
                if (!Strings.isEmpty(search)) {
                        CollectionUtils.filter(result, new 
Predicate<StringLabel>() {
                                @Override

Added: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.html?rev=1755471&view=auto
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.html
 (added)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.html
 Mon Aug  8 03:54:38 2016
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+      http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  
+-->
+<html xmlns:wicket="http://wicket.apache.org";>
+<wicket:panel>
+       <form wicket:id="addLangForm">
+               <div wicket:id="feedback"></div>
+               <table>
+                       <tr>
+                               <td><wicket:message key="1422" /></td>
+                               <td><input type="text" wicket:id="iso" /></td>
+                       </tr>
+               </table>
+       </form>
+</wicket:panel>
+</html>

Copied: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
 (from r1755470, 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java)
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java?p2=openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java&p1=openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java&r1=1755470&r2=1755471&rev=1755471&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
 Mon Aug  8 03:54:38 2016
@@ -1,93 +1,114 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.web.admin.labels;
-
-import java.util.IllformedLocaleException;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.openmeetings.db.dao.label.LabelDao;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.RequiredTextField;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.validation.IValidatable;
-import org.apache.wicket.validation.IValidator;
-import org.apache.wicket.validation.ValidationError;
-
-import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
-import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
-/**
- * 
- * @author solomax, swagner
- * 
- */
-public class AddLanguageForm extends Form<Void> {
-       private static final long serialVersionUID = 1L;
-       private final KendoFeedbackPanel feedback = new 
KendoFeedbackPanel("feedback", new Options("button", true));
-       private String newLanguageISO;
-       
-       public AddLanguageForm(String id, final LangPanel langPanel) {
-               super(id);
-               add(feedback);
-               add(new RequiredTextField<String>("iso", new 
PropertyModel<String>(this, "newLanguageISO")).add(new IValidator<String>() {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       public void validate(IValidatable<String> s) {
-                               try {
-                                       new 
Locale.Builder().setLanguageTag(s.getValue());
-                               } catch (IllformedLocaleException e) {
-                                       s.error(new ValidationError("Invalid 
code, please use ")); //FIXME TODO add proper key
-                                       return;
-                               }
-                               Locale l = Locale.forLanguageTag(s.getValue());
-                               for (Map.Entry<Long, Locale> e : 
LabelDao.languages.entrySet()) {
-                                       if (e.getValue().equals(l)) {
-                                               s.error(new 
ValidationError("This code already added")); //FIXME TODO add proper key
-                                               break;
-                                       }
-                               }
-                       }
-               }));
-               add(new AjaxButton("add", 
Model.of(Application.getString(366L)), this) {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       protected void onError(AjaxRequestTarget target, 
Form<?> form) {
-                               target.add(feedback);
-                       }
-                       
-                       @Override
-                       public void onSubmit(AjaxRequestTarget target, Form<?> 
form) {
-                               try {
-                                       
LabelDao.add(Locale.forLanguageTag(newLanguageISO));
-                                       
langPanel.getLangForm().updateLanguages(target);
-                                       
target.appendJavaScript("$('#addLanguage').dialog('close');");
-                               } catch (Exception e) {
-                                       error("Failed to add, " + 
e.getMessage()); //FIXME TODO add proper key
-                                       target.add(feedback);
-                               }
-                       }
-               });
-       }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.admin.labels;
+
+import java.util.Arrays;
+import java.util.IllformedLocaleException;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.label.LabelDao;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.validation.IValidatable;
+import org.apache.wicket.validation.IValidator;
+import org.apache.wicket.validation.ValidationError;
+
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
+
+public class AddLanguageDialog extends AbstractFormDialog<String> {
+       private static final long serialVersionUID = 1L;
+       private final KendoFeedbackPanel feedback = new 
KendoFeedbackPanel("feedback", new Options("button", true));
+       private final DialogButton add = new DialogButton("add", 
Application.getString(366L));
+       private final Form<Void> form = new Form<>("addLangForm");
+       private final RequiredTextField<String> iso = new 
RequiredTextField<String>("iso", Model.of(""));
+       private final LangPanel langPanel;
+
+       public AddLanguageDialog(String id, final LangPanel langPanel) {
+               super(id, Application.getString(364));
+               this.langPanel = langPanel;
+               add(form.add(feedback, iso));
+               iso.add(new IValidator<String>() {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void validate(IValidatable<String> s) {
+                               try {
+                                       new 
Locale.Builder().setLanguageTag(s.getValue());
+                               } catch (IllformedLocaleException e) {
+                                       s.error(new ValidationError("Invalid 
code, please use ")); //FIXME TODO add proper key
+                                       return;
+                               }
+                               Locale l = Locale.forLanguageTag(s.getValue());
+                               for (Map.Entry<Long, Locale> e : 
LabelDao.languages.entrySet()) {
+                                       if (e.getValue().equals(l)) {
+                                               s.error(new 
ValidationError("This code already added")); //FIXME TODO add proper key
+                                               break;
+                                       }
+                               }
+                       }
+               });
+       }
+       
+       @Override
+       public Form<?> getForm() {
+               return form;
+       }
+
+       @Override
+       protected List<DialogButton> getButtons() {
+               return Arrays.asList(add);
+       }
+       
+       @Override
+       public DialogButton getSubmitButton() {
+               return add;
+       }
+
+       @Override
+       protected void onOpen(IPartialPageRequestHandler handler) {
+               super.onOpen(handler);
+               iso.setModelObject("");
+       }
+       
+       @Override
+       protected void onError(AjaxRequestTarget target) {
+               target.add(feedback);
+       }
+
+       @Override
+       protected void onSubmit(AjaxRequestTarget target) {
+               try {
+                       
LabelDao.add(Locale.forLanguageTag(iso.getModelObject()));
+                       langPanel.getLangForm().updateLanguages(target);
+                       
target.appendJavaScript("$('#addLanguage').dialog('close');");
+               } catch (Exception e) {
+                       error("Failed to add, " + e.getMessage()); //FIXME TODO 
add proper key
+                       target.add(feedback);
+               }
+       }
+}

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java
 Mon Aug  8 03:54:38 2016
@@ -25,7 +25,6 @@ import java.util.Locale;
 import java.util.Map;
 
 import org.apache.openmeetings.db.dao.label.LabelDao;
-import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
 import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
@@ -46,7 +45,7 @@ public class LangForm extends Form<Void>
        private static final long serialVersionUID = 1L;
        private DropDownChoice<Map.Entry<Long, Locale>> languages;
 
-       private static List<Map.Entry<Long, Locale>> getLanguages() {
+       static List<Map.Entry<Long, Locale>> getLanguages() {
                List<Map.Entry<Long, Locale>> list = new 
ArrayList<Map.Entry<Long, Locale>>();
                for (Map.Entry<Long, Locale> e : LabelDao.languages.entrySet()) 
{
                        list.add(new 
AbstractMap.SimpleEntry<Long,Locale>(e.getKey(), e.getValue()));
@@ -97,20 +96,6 @@ public class LangForm extends Form<Void>
                        }
                });
                add(languages);
-
-               add(new ConfirmableAjaxBorder("deleteLangBtn", getString("80"), 
getString("833")) {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       protected void onSubmit(AjaxRequestTarget target, 
Form<?> form) {
-                               LabelDao.delete(langPanel.language.getValue());
-                               List<Map.Entry<Long, Locale>> langs = 
getLanguages();
-                               langPanel.language = langs.isEmpty() ? null : 
langs.get(0);
-                               languages.setChoices(langs);
-                               target.add(languages, listContainer);
-                       }
-               });
-
                // attach an ajax validation behavior to all form component's 
keydown
                // event and throttle it down to once per second
                add(new AjaxFormValidatingBehavior("keydown", 
Duration.ONE_SECOND));

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
 Mon Aug  8 03:54:38 2016
@@ -35,17 +35,13 @@
                </script>
                <div class="adminPanel">
                        <div class="adminPanelColumnTable">
+                               <div>
+                               <div wicket:id="addLangBtn" class="addButton" 
wicket:message="title:362" ></div>
+                               <div wicket:id="deleteLangBtn" 
class="delButton" wicket:message="title:363"></div>
                                <form wicket:id="langForm" 
class="addLanguagePanel">
                                        <table>
                                                <tr>
                                                        <td>
-                                                               <div 
class="formNewButton" wicket:message="title:362" 
-                                                                       
onclick="$('#addLanguage :text').val(''); 
$('#addLanguage').dialog('open');"><input type="button" title=""/></div>
-                                                       </td>
-                                                       <td>
-                                                               <div 
wicket:id="deleteLangBtn" class="formCancelButton" 
wicket:message="title:363"></div>
-                                                       </td>
-                                                       <td>
                                                                <select 
wicket:id="language"></select>
                                                        </td>
                                                        <td>
@@ -60,6 +56,7 @@
                                                </tr>
                                        </table>
                                </form>
+                               </div>
                                <span wicket:id="navigator">[dataview 
navigator]</span>
                                <table class="adminListTable">
                                        <thead>
@@ -97,19 +94,6 @@
                                </form>
                        </div>
                </div>
-               <div id="addLanguage" wicket:message="title:364" 
style="display: none;">
-                       <form wicket:id="addLangForm">
-                               <div wicket:id="feedback"></div>
-                               <table>
-                                       <tr>
-                                               <td><wicket:message key="1422" 
/></td>
-                                               <td><input type="text" 
wicket:id="iso"/></td>
-                                       </tr>
-                                       <tr>
-                                               <td align="right" 
colspan="2"><input type="submit" wicket:id="add"/></td>
-                                       </tr>
-                               </table>
-                       </form>
-               </div>
+               <div wicket:id="addLang"></div>
        </wicket:panel>
 </html>

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
 Mon Aug  8 03:54:38 2016
@@ -24,6 +24,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.AbstractMap;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
@@ -32,6 +33,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.web.admin.AdminPanel;
 import org.apache.openmeetings.web.admin.SearchableDataView;
 import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.openmeetings.web.common.PagedEntityListPanel;
 import org.apache.openmeetings.web.data.DataViewContainer;
 import org.apache.openmeetings.web.data.OmOrderByBorder;
@@ -42,6 +44,7 @@ import org.apache.wicket.AttributeModifi
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import 
org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -66,15 +69,14 @@ import com.googlecode.wicket.kendo.ui.pa
  * 
  */
 public class LangPanel extends AdminPanel {
-       private static final Logger log = 
Red5LoggerFactory.getLogger(LangPanel.class, webAppRootKey);
        private static final long serialVersionUID = 1L;
+       private static final Logger log = 
Red5LoggerFactory.getLogger(LangPanel.class, webAppRootKey);
+       private final KendoFeedbackPanel feedback = new 
KendoFeedbackPanel("feedback", new Options("button", true));
+       private final LangForm langForm;
+       private FileUploadField fileUploadField;
 
        final WebMarkupContainer listContainer = new 
WebMarkupContainer("listContainer");;
-       private LangForm langForm;
        Map.Entry<Long, Locale> language;
-       private FileUploadField fileUploadField;
-       // Create feedback panels
-       private final KendoFeedbackPanel feedback = new 
KendoFeedbackPanel("feedback", new Options("button", true));
        
        @Override
        public void onMenuPanelLoad(IPartialPageRequestHandler handler) {
@@ -225,10 +227,35 @@ public class LangPanel extends AdminPane
                });
                
                add(langForm);
-               add(new AddLanguageForm("addLangForm", this));
+               final AddLanguageDialog addLang = new 
AddLanguageDialog("addLang", this);
+               add(addLang, new AjaxLink<Void>("addLangBtn") {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void onClick(AjaxRequestTarget target) {
+                               addLang.open(target);
+                       }
+               });
                add(BootstrapFileUploadBehavior.INSTANCE);
        }
 
+       @Override
+       protected void onInitialize() {
+               super.onInitialize();
+               add(new ConfirmableAjaxBorder("deleteLangBtn", getString("80"), 
getString("833")) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       protected void onSubmit(AjaxRequestTarget target, 
Form<?> form) {
+                               LabelDao.delete(language.getValue());
+                               List<Map.Entry<Long, Locale>> langs = 
LangForm.getLanguages();
+                               language = langs.isEmpty() ? null : 
langs.get(0);
+                               langForm.updateLanguages(target);
+                               target.add(listContainer);
+                       }
+               });
+       }
+       
        public LangForm getLangForm() {
                return langForm;
        }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/forms.css
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/forms.css?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/forms.css
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/forms.css
 Mon Aug  8 03:54:38 2016
@@ -16,11 +16,22 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+ 
+ /**** FIXME TODO need to be unified with other icons used ****/
 div.formSaveBar {
        width: 100%;
        height: 22px;
 }
- 
+.addButton, .delButton {
+       display: inline-block;
+       cursor: pointer;
+       width: 18px;
+       height: 18px;
+       border: none;
+       margin-left: 2px;
+       margin-top: 2px;
+       vertical-align: super;
+}
 div.formSaveButton input {
        background: url(images/forms/disk.png) no-repeat;
        float: left;
@@ -31,7 +42,12 @@ div.formSaveButton input {
        margin-left: 2px;
        margin-top: 2px;
 }
-
+.addButton {
+       background: url(images/forms/plus_icon.png) no-repeat;
+}
+.delButton {
+       background: url(images/forms/cancel_icon.png) no-repeat;
+}
 div.formNewButton input {
        background: url(images/forms/plus_icon.png) no-repeat;
        float: left;
@@ -42,18 +58,9 @@ div.formNewButton input {
        margin-left: 2px;
        margin-top: 2px;
 }
-
 div.formNewButton.disabled input {
        background: url(images/forms/plus_icon_disabled.png) no-repeat;
-       float: left;
-       cursor: default;
-       width: 18px;
-       height: 18px;
-       border: none;
-       margin-left: 2px;
-       margin-top: 2px;
 }
-
 div.formRefreshButton input {
        background: url(images/forms/arrow_refresh_small.png) no-repeat;
        float: left;
@@ -64,7 +71,6 @@ div.formRefreshButton input {
        margin-left: 2px;
        margin-top: 2px;
 }
-
 div.formCancelButton>div {
        background: url(images/forms/cancel_icon.png) no-repeat;
        display: inline-block;

Added: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/images/bin_closed.png
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/images/bin_closed.png?rev=1755471&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/images/bin_closed.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/images/bin_empty.png
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/images/bin_empty.png?rev=1755471&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/images/bin_empty.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/theme.css
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/theme.css?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/theme.css
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/theme.css
 Mon Aug  8 03:54:38 2016
@@ -105,7 +105,7 @@ html, body {
 }
 
 .addLanguagePanel {
-       display: block;
+       display: inline-block;
 }
 
 .addLanguagePanel select {
@@ -257,6 +257,9 @@ html, body {
        line-height: 20px;
        color: transparent;
 }
+.trash-toolbar .fileitem {
+       display: none;
+}
 .trash-toolbar-hover {
        color: inherit;
 }
@@ -322,8 +325,11 @@ html, body {
        background: url(images/refresh.gif);
 }
 .trash.om-icon {
-       background: url(images/trash.png);
+       background: url(images/bin_closed.png);
 }
+.ui-state-hover.trash-toolbar-hover .trash.om-icon {
+       background: url(images/bin_empty.png);
+} 
 .folder-create.om-icon {
        background: url(images/folder_add.png);
 }

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
 Mon Aug  8 03:54:38 2016
@@ -259,7 +259,7 @@ public class LabelDao implements IDataPr
                                labelCache.putIfAbsent(l, ll);
                        }
                }
-               List<StringLabel> result = labelCache.containsKey(l) ? 
labelCache.get(l) : new ArrayList<StringLabel>();
+               List<StringLabel> result = new 
ArrayList<>(labelCache.containsKey(l) ? labelCache.get(l) : new 
ArrayList<StringLabel>());
                if (!Strings.isEmpty(search)) {
                        CollectionUtils.filter(result, new 
Predicate<StringLabel>() {
                                @Override

Added: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.html?rev=1755471&view=auto
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.html
 (added)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.html
 Mon Aug  8 03:54:38 2016
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+      http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  
+-->
+<html xmlns:wicket="http://wicket.apache.org";>
+<wicket:panel>
+       <form wicket:id="addLangForm">
+               <div wicket:id="feedback"></div>
+               <table>
+                       <tr>
+                               <td><wicket:message key="1422" /></td>
+                               <td><input type="text" wicket:id="iso" /></td>
+                       </tr>
+               </table>
+       </form>
+</wicket:panel>
+</html>

Copied: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
 (from r1755470, 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java)
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java?p2=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java&p1=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java&r1=1755470&r2=1755471&rev=1755471&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
 Mon Aug  8 03:54:38 2016
@@ -18,38 +18,41 @@
  */
 package org.apache.openmeetings.web.admin.labels;
 
+import java.util.Arrays;
 import java.util.IllformedLocaleException;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
 import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.RequiredTextField;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.validation.IValidatable;
 import org.apache.wicket.validation.IValidator;
 import org.apache.wicket.validation.ValidationError;
 
 import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
-/**
- * 
- * @author solomax, swagner
- * 
- */
-public class AddLanguageForm extends Form<Void> {
+
+public class AddLanguageDialog extends AbstractFormDialog<String> {
        private static final long serialVersionUID = 1L;
        private final KendoFeedbackPanel feedback = new 
KendoFeedbackPanel("feedback", new Options("button", true));
-       private String newLanguageISO;
-       
-       public AddLanguageForm(String id, final LangPanel langPanel) {
-               super(id);
-               add(feedback);
-               add(new RequiredTextField<String>("iso", new 
PropertyModel<String>(this, "newLanguageISO")).add(new IValidator<String>() {
+       private final DialogButton add = new DialogButton("add", 
Application.getString(366L));
+       private final Form<Void> form = new Form<>("addLangForm");
+       private final RequiredTextField<String> iso = new 
RequiredTextField<String>("iso", Model.of(""));
+       private final LangPanel langPanel;
+
+       public AddLanguageDialog(String id, final LangPanel langPanel) {
+               super(id, Application.getString(364));
+               this.langPanel = langPanel;
+               add(form.add(feedback, iso));
+               iso.add(new IValidator<String>() {
                        private static final long serialVersionUID = 1L;
 
                        @Override
@@ -68,26 +71,44 @@ public class AddLanguageForm extends For
                                        }
                                }
                        }
-               }));
-               add(new AjaxButton("add", 
Model.of(Application.getString(366L)), this) {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       protected void onError(AjaxRequestTarget target, 
Form<?> form) {
-                               target.add(feedback);
-                       }
-                       
-                       @Override
-                       public void onSubmit(AjaxRequestTarget target, Form<?> 
form) {
-                               try {
-                                       
LabelDao.add(Locale.forLanguageTag(newLanguageISO));
-                                       
langPanel.getLangForm().updateLanguages(target);
-                                       
target.appendJavaScript("$('#addLanguage').dialog('close');");
-                               } catch (Exception e) {
-                                       error("Failed to add, " + 
e.getMessage()); //FIXME TODO add proper key
-                                       target.add(feedback);
-                               }
-                       }
                });
        }
+       
+       @Override
+       public Form<?> getForm() {
+               return form;
+       }
+
+       @Override
+       protected List<DialogButton> getButtons() {
+               return Arrays.asList(add);
+       }
+       
+       @Override
+       public DialogButton getSubmitButton() {
+               return add;
+       }
+
+       @Override
+       protected void onOpen(IPartialPageRequestHandler handler) {
+               super.onOpen(handler);
+               iso.setModelObject("");
+       }
+       
+       @Override
+       protected void onError(AjaxRequestTarget target) {
+               target.add(feedback);
+       }
+
+       @Override
+       protected void onSubmit(AjaxRequestTarget target) {
+               try {
+                       
LabelDao.add(Locale.forLanguageTag(iso.getModelObject()));
+                       langPanel.getLangForm().updateLanguages(target);
+                       
target.appendJavaScript("$('#addLanguage').dialog('close');");
+               } catch (Exception e) {
+                       error("Failed to add, " + e.getMessage()); //FIXME TODO 
add proper key
+                       target.add(feedback);
+               }
+       }
 }

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java
 Mon Aug  8 03:54:38 2016
@@ -25,7 +25,6 @@ import java.util.Locale;
 import java.util.Map;
 
 import org.apache.openmeetings.db.dao.label.LabelDao;
-import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
 import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
@@ -46,7 +45,7 @@ public class LangForm extends Form<Void>
        private static final long serialVersionUID = 1L;
        private DropDownChoice<Map.Entry<Long, Locale>> languages;
 
-       private static List<Map.Entry<Long, Locale>> getLanguages() {
+       static List<Map.Entry<Long, Locale>> getLanguages() {
                List<Map.Entry<Long, Locale>> list = new 
ArrayList<Map.Entry<Long, Locale>>();
                for (Map.Entry<Long, Locale> e : LabelDao.languages.entrySet()) 
{
                        list.add(new 
AbstractMap.SimpleEntry<Long,Locale>(e.getKey(), e.getValue()));
@@ -97,20 +96,6 @@ public class LangForm extends Form<Void>
                        }
                });
                add(languages);
-
-               add(new ConfirmableAjaxBorder("deleteLangBtn", getString("80"), 
getString("833")) {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       protected void onSubmit(AjaxRequestTarget target, 
Form<?> form) {
-                               LabelDao.delete(langPanel.language.getValue());
-                               List<Map.Entry<Long, Locale>> langs = 
getLanguages();
-                               langPanel.language = langs.isEmpty() ? null : 
langs.get(0);
-                               languages.setChoices(langs);
-                               target.add(languages, listContainer);
-                       }
-               });
-
                // attach an ajax validation behavior to all form component's 
keydown
                // event and throttle it down to once per second
                add(new AjaxFormValidatingBehavior("keydown", 
Duration.ONE_SECOND));

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
 Mon Aug  8 03:54:38 2016
@@ -35,24 +35,20 @@
                </script>
                <div class="adminPanel">
                        <div class="adminPanelColumnTable">
+                               <div>
+                               <div wicket:id="addLangBtn" class="addButton" 
wicket:message="title:362" ></div>
+                               <div wicket:id="deleteLangBtn" 
class="delButton" wicket:message="title:363"></div>
                                <form wicket:id="langForm" 
class="addLanguagePanel">
                                        <table>
                                                <tr>
                                                        <td>
-                                                               <div 
class="formNewButton" wicket:message="title:362" 
-                                                                       
onclick="$('#addLanguage :text').val(''); 
$('#addLanguage').dialog('open');"><input type="button" title=""/></div>
-                                                       </td>
-                                                       <td>
-                                                               <div 
wicket:id="deleteLangBtn" class="formCancelButton" 
wicket:message="title:363"></div>
-                                                       </td>
-                                                       <td>
                                                                <select 
wicket:id="language"></select>
                                                        </td>
                                                        <td>
                                                                <span 
wicket:id="export" class="btn"><wicket:message key="360"/></span>
                                                        </td>
                                                        <td>
-                                                               <div 
class="fileinput fileinput-new" data-provides="fileinput" style="margin: 0;">
+                                                               <div 
class="fileupload fileupload-new" data-provides="fileupload" style="margin: 0;">
                                                                        <span 
class="btn btn-file ui-button ui-widget ui-state-default ui-corner-all 
ui-button-text-only"><span class="ui-button-text"><wicket:message 
key="387"/></span><input type="file" accept="text/xml" 
wicket:id="fileInput"/></span>
                                                                </div>
                                                                <span 
wicket:id="progress">[progressbar]</span>
@@ -60,6 +56,7 @@
                                                </tr>
                                        </table>
                                </form>
+                               </div>
                                <span wicket:id="navigator">[dataview 
navigator]</span>
                                <table class="adminListTable">
                                        <thead>
@@ -97,19 +94,6 @@
                                </form>
                        </div>
                </div>
-               <div id="addLanguage" wicket:message="title:364" 
style="display: none;">
-                       <form wicket:id="addLangForm">
-                               <div wicket:id="feedback"></div>
-                               <table>
-                                       <tr>
-                                               <td><wicket:message key="1422" 
/></td>
-                                               <td><input type="text" 
wicket:id="iso"/></td>
-                                       </tr>
-                                       <tr>
-                                               <td align="right" 
colspan="2"><input type="submit" wicket:id="add"/></td>
-                                       </tr>
-                               </table>
-                       </form>
-               </div>
+               <div wicket:id="addLang"></div>
        </wicket:panel>
 </html>

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
 Mon Aug  8 03:54:38 2016
@@ -24,6 +24,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.AbstractMap;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
@@ -32,6 +33,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.web.admin.AdminPanel;
 import org.apache.openmeetings.web.admin.SearchableDataView;
 import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.openmeetings.web.common.PagedEntityListPanel;
 import org.apache.openmeetings.web.data.DataViewContainer;
 import org.apache.openmeetings.web.data.OmOrderByBorder;
@@ -42,6 +44,7 @@ import org.apache.wicket.AttributeModifi
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import 
org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -66,15 +69,14 @@ import com.googlecode.wicket.kendo.ui.pa
  * 
  */
 public class LangPanel extends AdminPanel {
-       private static final Logger log = 
Red5LoggerFactory.getLogger(LangPanel.class, webAppRootKey);
        private static final long serialVersionUID = 1L;
+       private static final Logger log = 
Red5LoggerFactory.getLogger(LangPanel.class, webAppRootKey);
+       private final KendoFeedbackPanel feedback = new 
KendoFeedbackPanel("feedback", new Options("button", true));
+       private final LangForm langForm;
+       private FileUploadField fileUploadField;
 
        final WebMarkupContainer listContainer = new 
WebMarkupContainer("listContainer");;
-       private LangForm langForm;
        Map.Entry<Long, Locale> language;
-       private FileUploadField fileUploadField;
-       // Create feedback panels
-       private final KendoFeedbackPanel feedback = new 
KendoFeedbackPanel("feedback", new Options("button", true));
        
        @Override
        public void onMenuPanelLoad(IPartialPageRequestHandler handler) {
@@ -225,10 +227,35 @@ public class LangPanel extends AdminPane
                });
                
                add(langForm);
-               add(new AddLanguageForm("addLangForm", this));
+               final AddLanguageDialog addLang = new 
AddLanguageDialog("addLang", this);
+               add(addLang, new AjaxLink<Void>("addLangBtn") {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void onClick(AjaxRequestTarget target) {
+                               addLang.open(target);
+                       }
+               });
                add(BootstrapFileUploadBehavior.INSTANCE);
        }
 
+       @Override
+       protected void onInitialize() {
+               super.onInitialize();
+               add(new ConfirmableAjaxBorder("deleteLangBtn", getString("80"), 
getString("833")) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       protected void onSubmit(AjaxRequestTarget target, 
Form<?> form) {
+                               LabelDao.delete(language.getValue());
+                               List<Map.Entry<Long, Locale>> langs = 
LangForm.getLanguages();
+                               language = langs.isEmpty() ? null : 
langs.get(0);
+                               langForm.updateLanguages(target);
+                               target.add(listContainer);
+                       }
+               });
+       }
+       
        public LangForm getLangForm() {
                return langForm;
        }

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/forms.css
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/forms.css?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/forms.css
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/forms.css
 Mon Aug  8 03:54:38 2016
@@ -16,11 +16,22 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+ 
+ /**** FIXME TODO need to be unified with other icons used ****/
 div.formSaveBar {
        width: 100%;
        height: 22px;
 }
- 
+.addButton, .delButton {
+       display: inline-block;
+       cursor: pointer;
+       width: 18px;
+       height: 18px;
+       border: none;
+       margin-left: 2px;
+       margin-top: 2px;
+       vertical-align: super;
+}
 div.formSaveButton input {
        background: url(images/forms/disk.png) no-repeat;
        float: left;
@@ -31,7 +42,12 @@ div.formSaveButton input {
        margin-left: 2px;
        margin-top: 2px;
 }
-
+.addButton {
+       background: url(images/forms/plus_icon.png) no-repeat;
+}
+.delButton {
+       background: url(images/forms/cancel_icon.png) no-repeat;
+}
 div.formNewButton input {
        background: url(images/forms/plus_icon.png) no-repeat;
        float: left;
@@ -42,18 +58,9 @@ div.formNewButton input {
        margin-left: 2px;
        margin-top: 2px;
 }
-
 div.formNewButton.disabled input {
        background: url(images/forms/plus_icon_disabled.png) no-repeat;
-       float: left;
-       cursor: default;
-       width: 18px;
-       height: 18px;
-       border: none;
-       margin-left: 2px;
-       margin-top: 2px;
 }
-
 div.formRefreshButton input {
        background: url(images/forms/arrow_refresh_small.png) no-repeat;
        float: left;
@@ -64,7 +71,6 @@ div.formRefreshButton input {
        margin-left: 2px;
        margin-top: 2px;
 }
-
 div.formCancelButton>div {
        background: url(images/forms/cancel_icon.png) no-repeat;
        display: inline-block;

Added: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/images/bin_closed.png
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/images/bin_closed.png?rev=1755471&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/images/bin_closed.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/images/bin_empty.png
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/images/bin_empty.png?rev=1755471&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/images/bin_empty.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css
 Mon Aug  8 03:54:38 2016
@@ -105,7 +105,7 @@ html, body {
 }
 
 .addLanguagePanel {
-       display: block;
+       display: inline-block;
 }
 
 .addLanguagePanel select {
@@ -257,6 +257,9 @@ html, body {
        line-height: 20px;
        color: transparent;
 }
+.trash-toolbar .fileitem {
+       display: none;
+}
 .trash-toolbar-hover {
        color: inherit;
 }
@@ -322,8 +325,11 @@ html, body {
        background: url(images/refresh.gif);
 }
 .trash.om-icon {
-       background: url(images/trash.png);
+       background: url(images/bin_closed.png);
 }
+.ui-state-hover.trash-toolbar-hover .trash.om-icon {
+       background: url(images/bin_empty.png);
+} 
 .folder-create.om-icon {
        background: url(images/folder_add.png);
 }

Modified: 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
 Mon Aug  8 03:54:38 2016
@@ -259,7 +259,7 @@ public class LabelDao implements IDataPr
                                labelCache.putIfAbsent(l, ll);
                        }
                }
-               List<StringLabel> result = labelCache.containsKey(l) ? 
labelCache.get(l) : new ArrayList<StringLabel>();
+               List<StringLabel> result = new 
ArrayList<>(labelCache.containsKey(l) ? labelCache.get(l) : new 
ArrayList<StringLabel>());
                if (!Strings.isEmpty(search)) {
                        CollectionUtils.filter(result, new 
Predicate<StringLabel>() {
                                @Override

Added: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.html?rev=1755471&view=auto
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.html
 (added)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.html
 Mon Aug  8 03:54:38 2016
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+      http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  
+-->
+<html xmlns:wicket="http://wicket.apache.org";>
+<wicket:panel>
+       <form wicket:id="addLangForm">
+               <div wicket:id="feedback"></div>
+               <table>
+                       <tr>
+                               <td><wicket:message key="1422" /></td>
+                               <td><input type="text" wicket:id="iso" /></td>
+                       </tr>
+               </table>
+       </form>
+</wicket:panel>
+</html>

Copied: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
 (from r1755470, 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java)
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java?p2=openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java&p1=openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java&r1=1755470&r2=1755471&rev=1755471&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
 Mon Aug  8 03:54:38 2016
@@ -18,38 +18,41 @@
  */
 package org.apache.openmeetings.web.admin.labels;
 
+import java.util.Arrays;
 import java.util.IllformedLocaleException;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
 import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.RequiredTextField;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.validation.IValidatable;
 import org.apache.wicket.validation.IValidator;
 import org.apache.wicket.validation.ValidationError;
 
 import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
-/**
- * 
- * @author solomax, swagner
- * 
- */
-public class AddLanguageForm extends Form<Void> {
+
+public class AddLanguageDialog extends AbstractFormDialog<String> {
        private static final long serialVersionUID = 1L;
        private final KendoFeedbackPanel feedback = new 
KendoFeedbackPanel("feedback", new Options("button", true));
-       private String newLanguageISO;
-       
-       public AddLanguageForm(String id, final LangPanel langPanel) {
-               super(id);
-               add(feedback);
-               add(new RequiredTextField<String>("iso", new 
PropertyModel<String>(this, "newLanguageISO")).add(new IValidator<String>() {
+       private final DialogButton add = new DialogButton("add", 
Application.getString(366L));
+       private final Form<Void> form = new Form<>("addLangForm");
+       private final RequiredTextField<String> iso = new 
RequiredTextField<String>("iso", Model.of(""));
+       private final LangPanel langPanel;
+
+       public AddLanguageDialog(String id, final LangPanel langPanel) {
+               super(id, Application.getString(364));
+               this.langPanel = langPanel;
+               add(form.add(feedback, iso));
+               iso.add(new IValidator<String>() {
                        private static final long serialVersionUID = 1L;
 
                        @Override
@@ -68,26 +71,44 @@ public class AddLanguageForm extends For
                                        }
                                }
                        }
-               }));
-               add(new AjaxButton("add", 
Model.of(Application.getString(366L)), this) {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       protected void onError(AjaxRequestTarget target, 
Form<?> form) {
-                               target.add(feedback);
-                       }
-                       
-                       @Override
-                       public void onSubmit(AjaxRequestTarget target, Form<?> 
form) {
-                               try {
-                                       
LabelDao.add(Locale.forLanguageTag(newLanguageISO));
-                                       
langPanel.getLangForm().updateLanguages(target);
-                                       
target.appendJavaScript("$('#addLanguage').dialog('close');");
-                               } catch (Exception e) {
-                                       error("Failed to add, " + 
e.getMessage()); //FIXME TODO add proper key
-                                       target.add(feedback);
-                               }
-                       }
                });
        }
+       
+       @Override
+       public Form<?> getForm() {
+               return form;
+       }
+
+       @Override
+       protected List<DialogButton> getButtons() {
+               return Arrays.asList(add);
+       }
+       
+       @Override
+       public DialogButton getSubmitButton() {
+               return add;
+       }
+
+       @Override
+       protected void onOpen(IPartialPageRequestHandler handler) {
+               super.onOpen(handler);
+               iso.setModelObject("");
+       }
+       
+       @Override
+       protected void onError(AjaxRequestTarget target) {
+               target.add(feedback);
+       }
+
+       @Override
+       protected void onSubmit(AjaxRequestTarget target) {
+               try {
+                       
LabelDao.add(Locale.forLanguageTag(iso.getModelObject()));
+                       langPanel.getLangForm().updateLanguages(target);
+                       
target.appendJavaScript("$('#addLanguage').dialog('close');");
+               } catch (Exception e) {
+                       error("Failed to add, " + e.getMessage()); //FIXME TODO 
add proper key
+                       target.add(feedback);
+               }
+       }
 }

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangForm.java
 Mon Aug  8 03:54:38 2016
@@ -25,7 +25,6 @@ import java.util.Locale;
 import java.util.Map;
 
 import org.apache.openmeetings.db.dao.label.LabelDao;
-import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
 import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
@@ -46,7 +45,7 @@ public class LangForm extends Form<Void>
        private static final long serialVersionUID = 1L;
        private DropDownChoice<Map.Entry<Long, Locale>> languages;
 
-       private static List<Map.Entry<Long, Locale>> getLanguages() {
+       static List<Map.Entry<Long, Locale>> getLanguages() {
                List<Map.Entry<Long, Locale>> list = new 
ArrayList<Map.Entry<Long, Locale>>();
                for (Map.Entry<Long, Locale> e : LabelDao.languages.entrySet()) 
{
                        list.add(new 
AbstractMap.SimpleEntry<Long,Locale>(e.getKey(), e.getValue()));
@@ -97,20 +96,6 @@ public class LangForm extends Form<Void>
                        }
                });
                add(languages);
-
-               add(new ConfirmableAjaxBorder("deleteLangBtn", getString("80"), 
getString("833")) {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       protected void onSubmit(AjaxRequestTarget target, 
Form<?> form) {
-                               LabelDao.delete(langPanel.language.getValue());
-                               List<Map.Entry<Long, Locale>> langs = 
getLanguages();
-                               langPanel.language = langs.isEmpty() ? null : 
langs.get(0);
-                               languages.setChoices(langs);
-                               target.add(languages, listContainer);
-                       }
-               });
-
                // attach an ajax validation behavior to all form component's 
keydown
                // event and throttle it down to once per second
                add(new AjaxFormValidatingBehavior("keydown", 
Duration.ONE_SECOND));

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
 Mon Aug  8 03:54:38 2016
@@ -35,24 +35,20 @@
                </script>
                <div class="adminPanel">
                        <div class="adminPanelColumnTable">
+                               <div>
+                               <div wicket:id="addLangBtn" class="addButton" 
wicket:message="title:362" ></div>
+                               <div wicket:id="deleteLangBtn" 
class="delButton" wicket:message="title:363"></div>
                                <form wicket:id="langForm" 
class="addLanguagePanel">
                                        <table>
                                                <tr>
                                                        <td>
-                                                               <div 
class="formNewButton" wicket:message="title:362" 
-                                                                       
onclick="$('#addLanguage :text').val(''); 
$('#addLanguage').dialog('open');"><input type="button" title=""/></div>
-                                                       </td>
-                                                       <td>
-                                                               <div 
wicket:id="deleteLangBtn" class="formCancelButton" 
wicket:message="title:363"></div>
-                                                       </td>
-                                                       <td>
                                                                <select 
wicket:id="language"></select>
                                                        </td>
                                                        <td>
                                                                <span 
wicket:id="export" class="btn"><wicket:message key="360"/></span>
                                                        </td>
                                                        <td>
-                                                               <div 
class="fileinput fileinput-new" data-provides="fileinput" style="margin: 0;">
+                                                               <div 
class="fileupload fileupload-new" data-provides="fileupload" style="margin: 0;">
                                                                        <span 
class="btn btn-file ui-button ui-widget ui-state-default ui-corner-all 
ui-button-text-only"><span class="ui-button-text"><wicket:message 
key="387"/></span><input type="file" accept="text/xml" 
wicket:id="fileInput"/></span>
                                                                </div>
                                                                <span 
wicket:id="progress">[progressbar]</span>
@@ -60,6 +56,7 @@
                                                </tr>
                                        </table>
                                </form>
+                               </div>
                                <span wicket:id="navigator">[dataview 
navigator]</span>
                                <table class="adminListTable">
                                        <thead>
@@ -97,19 +94,6 @@
                                </form>
                        </div>
                </div>
-               <div id="addLanguage" wicket:message="title:364" 
style="display: none;">
-                       <form wicket:id="addLangForm">
-                               <div wicket:id="feedback"></div>
-                               <table>
-                                       <tr>
-                                               <td><wicket:message key="1422" 
/></td>
-                                               <td><input type="text" 
wicket:id="iso"/></td>
-                                       </tr>
-                                       <tr>
-                                               <td align="right" 
colspan="2"><input type="submit" wicket:id="add"/></td>
-                                       </tr>
-                               </table>
-                       </form>
-               </div>
+               <div wicket:id="addLang"></div>
        </wicket:panel>
 </html>

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
 Mon Aug  8 03:54:38 2016
@@ -24,6 +24,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.AbstractMap;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
@@ -32,6 +33,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.web.admin.AdminPanel;
 import org.apache.openmeetings.web.admin.SearchableDataView;
 import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.openmeetings.web.common.PagedEntityListPanel;
 import org.apache.openmeetings.web.data.DataViewContainer;
 import org.apache.openmeetings.web.data.OmOrderByBorder;
@@ -42,6 +44,7 @@ import org.apache.wicket.AttributeModifi
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import 
org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -66,15 +69,14 @@ import com.googlecode.wicket.kendo.ui.pa
  * 
  */
 public class LangPanel extends AdminPanel {
-       private static final Logger log = 
Red5LoggerFactory.getLogger(LangPanel.class, webAppRootKey);
        private static final long serialVersionUID = 1L;
+       private static final Logger log = 
Red5LoggerFactory.getLogger(LangPanel.class, webAppRootKey);
+       private final KendoFeedbackPanel feedback = new 
KendoFeedbackPanel("feedback", new Options("button", true));
+       private final LangForm langForm;
+       private FileUploadField fileUploadField;
 
        final WebMarkupContainer listContainer = new 
WebMarkupContainer("listContainer");;
-       private LangForm langForm;
        Map.Entry<Long, Locale> language;
-       private FileUploadField fileUploadField;
-       // Create feedback panels
-       private final KendoFeedbackPanel feedback = new 
KendoFeedbackPanel("feedback", new Options("button", true));
        
        @Override
        public void onMenuPanelLoad(IPartialPageRequestHandler handler) {
@@ -225,10 +227,35 @@ public class LangPanel extends AdminPane
                });
                
                add(langForm);
-               add(new AddLanguageForm("addLangForm", this));
+               final AddLanguageDialog addLang = new 
AddLanguageDialog("addLang", this);
+               add(addLang, new AjaxLink<Void>("addLangBtn") {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void onClick(AjaxRequestTarget target) {
+                               addLang.open(target);
+                       }
+               });
                add(BootstrapFileUploadBehavior.INSTANCE);
        }
 
+       @Override
+       protected void onInitialize() {
+               super.onInitialize();
+               add(new ConfirmableAjaxBorder("deleteLangBtn", getString("80"), 
getString("833")) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       protected void onSubmit(AjaxRequestTarget target, 
Form<?> form) {
+                               LabelDao.delete(language.getValue());
+                               List<Map.Entry<Long, Locale>> langs = 
LangForm.getLanguages();
+                               language = langs.isEmpty() ? null : 
langs.get(0);
+                               langForm.updateLanguages(target);
+                               target.add(listContainer);
+                       }
+               });
+       }
+       
        public LangForm getLangForm() {
                return langForm;
        }

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/forms.css
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/forms.css?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/forms.css 
(original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/forms.css 
Mon Aug  8 03:54:38 2016
@@ -16,11 +16,22 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+ 
+ /**** FIXME TODO need to be unified with other icons used ****/
 div.formSaveBar {
        width: 100%;
        height: 22px;
 }
- 
+.addButton, .delButton {
+       display: inline-block;
+       cursor: pointer;
+       width: 18px;
+       height: 18px;
+       border: none;
+       margin-left: 2px;
+       margin-top: 2px;
+       vertical-align: super;
+}
 div.formSaveButton input {
        background: url(images/forms/disk.png) no-repeat;
        float: left;
@@ -31,7 +42,12 @@ div.formSaveButton input {
        margin-left: 2px;
        margin-top: 2px;
 }
-
+.addButton {
+       background: url(images/forms/plus_icon.png) no-repeat;
+}
+.delButton {
+       background: url(images/forms/cancel_icon.png) no-repeat;
+}
 div.formNewButton input {
        background: url(images/forms/plus_icon.png) no-repeat;
        float: left;
@@ -42,18 +58,9 @@ div.formNewButton input {
        margin-left: 2px;
        margin-top: 2px;
 }
-
 div.formNewButton.disabled input {
        background: url(images/forms/plus_icon_disabled.png) no-repeat;
-       float: left;
-       cursor: default;
-       width: 18px;
-       height: 18px;
-       border: none;
-       margin-left: 2px;
-       margin-top: 2px;
 }
-
 div.formRefreshButton input {
        background: url(images/forms/arrow_refresh_small.png) no-repeat;
        float: left;
@@ -64,7 +71,6 @@ div.formRefreshButton input {
        margin-left: 2px;
        margin-top: 2px;
 }
-
 div.formCancelButton>div {
        background: url(images/forms/cancel_icon.png) no-repeat;
        display: inline-block;

Added: 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/images/bin_closed.png
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/images/bin_closed.png?rev=1755471&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/images/bin_closed.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/images/bin_empty.png
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/images/bin_empty.png?rev=1755471&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/images/bin_empty.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css?rev=1755471&r1=1755470&r2=1755471&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css 
(original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css 
Mon Aug  8 03:54:38 2016
@@ -105,7 +105,7 @@ html, body {
 }
 
 .addLanguagePanel {
-       display: block;
+       display: inline-block;
 }
 
 .addLanguagePanel select {
@@ -257,6 +257,9 @@ html, body {
        line-height: 20px;
        color: transparent;
 }
+.trash-toolbar .fileitem {
+       display: none;
+}
 .trash-toolbar-hover {
        color: inherit;
 }
@@ -322,8 +325,11 @@ html, body {
        background: url(images/refresh.gif);
 }
 .trash.om-icon {
-       background: url(images/trash.png);
+       background: url(images/bin_closed.png);
 }
+.ui-state-hover.trash-toolbar-hover .trash.om-icon {
+       background: url(images/bin_empty.png);
+} 
 .folder-create.om-icon {
        background: url(images/folder_add.png);
 }


Reply via email to