You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2016/08/08 03:54:38 UTC

svn commit: r1755471 - in /openmeetings/application: branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/ branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/ branches/3.1.x/openmeetings-...

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);
 }