From: Roland Haeder Date: Mon, 11 Apr 2016 16:27:48 +0000 (+0200) Subject: Continued with adding countries: X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=481569a3d1ab44289b9b1951ccd3787035ad4401;p=addressbook-war.git Continued with adding countries: - admin country controller (class + interface) added - added admin form template for country data - added admin list/edit/delete pages for countries - added table_medium, table_left_medium, table_right_medium CSS classes - changed named phoneCountryCode to countryPhoneCode (naming convention) - other minor stuff mixed Signed-off-by: Roland Häder --- diff --git a/nbproject/faces-config.NavData b/nbproject/faces-config.NavData index 0f0b3623..a2fa2587 100644 --- a/nbproject/faces-config.NavData +++ b/nbproject/faces-config.NavData @@ -3,42 +3,45 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/org/mxchange/localization/bundle_de_DE.properties b/src/java/org/mxchange/localization/bundle_de_DE.properties index 42834fe0..41eb2959 100644 --- a/src/java/org/mxchange/localization/bundle_de_DE.properties +++ b/src/java/org/mxchange/localization/bundle_de_DE.properties @@ -380,3 +380,49 @@ ADMIN_ADD_USER_EMAIL_ADDRESS_NOTICE=*2: Die Email-Adresse darf nur einmal vorhan ADMIN_ADD_USER_CUSTOMER_NUMBER_NOTICE=Eine Kundennummer wird automatisch beim Erstellen des Accounts erzeugt. #@TODO Please fix German umlauts! BUTTON_ADMIN_ADD_USER=Neuen Benutzer hinzufuegen +#@TODO Please fix German umlauts! +ADMIN_MENU_COUNTRY_TITLE=Laenderdaten +#@TODO Please fix German umlauts! +LINK_ADMIN_LIST_COUNTRIES=Laender auflisten +#@TODO Please fix German umlauts! +LINK_ADMIN_LIST_COUNTRIES_TITLE=Bestehende Laenderdaten auflisten, neue hinzufuegen, aendern und loeschen. +#@TODO Please fix German umlauts! +PAGE_TITLE_ADMIN_LIST_COUNTRY=Laenderdaten verwalten +#@TODO Please fix German umlauts! +CONTENT_TITLE_ADMIN_LIST_COUNTRY=Laenderdaten verwalten: +#@TODO Please fix German umlauts! +ADMIN_ADD_COUNTRY_TITLE=Neues Land hinzufuegen +ADMIN_COUNTRY_DATA_MINIMUM_NOTICE=Bitte geben Sie alle Felder an. +#@TODO Please fix German umlauts! +ADMIN_ADD_COUNTRY_I18N_KEY_NOTICE=Der Schluessel fuer das Sprachpaket ist in Grossbuchstaben und Unterstrichen zu schreiben. Beispiel: COUNTRY_GERMANY fuer Deutschland +#@TODO Please fix German umlauts! +ADMIN_ADD_COUNTRY_NOTICES=Hinweise fuer Laenderdaten: +#@TODO Please fix German umlauts! +ADMIN_COUNTRY_PHONE_DATA_LEGEND=Laenderdaten und Telefon: +#@TODO Please fix German umlauts! +ADMIN_COUNTRY_PHONE_DATA_LEGEND_TITLE=Geben Sie hier Daten zum Land ein, wie auch Daten fuer Telefonnummern, wie z.B. Vorwahl fuer Auslandsgespraeche. +#@TODO Please fix German umlauts! +ADMIN_ENTER_COUNTRY_ABROAD_DIAL_PREFIX=Vorwahl fuer Auslandsgespraeche: +#@TODO Please fix German umlauts! +ADMIN_ENTER_COUNTRY_CODE=Zweistelliger Laendercode: +#@TODO Please fix German umlauts! +ADMIN_ENTER_COUNTRY_CODE_EXAMPLE=(Beispiel: DE fuer Deutschland) +#@TODO Please fix German umlauts! +ADMIN_ENTER_COUNTRY_I18N_KEY=Schluessel fuer Sprachpaket: +#@TODO Please fix German umlauts! +ADMIN_SELECT_COUNTRY_IS_EXTERNAL_DIAL_PREFIX_REQUIORED=Wird der Praefix fuer lokale Gespraeche benoetigt? (Meistens ja) +ADMIN_ENTER_COUNTRY_EXTERNAL_DIAL_PREFIX=Vorwahl fuer Gespraeche ausserhalb des Ortes: (meistens 0) +#@TODO Please fix German umlauts! +ADMIN_ENTER_COUNTRY_PHONE_CODE=Vorwahl fuer das Land: +#@TODO Please fix German umlauts! +ADMIN_ENTER_COUNTRY_PHONE_CODE_EXAMPLE=(Beispiel: 49 fuer Deutschland) +#@TODO Please fix German umlauts! +BUTTON_ADMIN_ADD_COUNTRY=Laenderdaten hinzufuegen +ADMIN_LIST_COUNTRY_DATA_COUNTRY_ID=Id-Nummer: +#@TODO Please fix German umlauts! +ADMIN_LIST_COUNTRY_DATA_COUNTRY_CODE=Laendercode: +ADMIN_LIST_COUNTRY_DATA_COUNTRY_EXTERNAL_DIAL_PREFIX=Vorwahl ausserorts: +ADMIN_LIST_COUNTRY_DATA_COUNTRY_NAME=Land: +#@TODO Please fix German umlauts! +ADMIN_LINK_EDIT_DELETE_COUNTRY_TITLE=Aendern oder loeschen der Laenderdaten +COUNTRY_GERMANY=Deutschland diff --git a/src/java/org/mxchange/localization/bundle_en_US.properties b/src/java/org/mxchange/localization/bundle_en_US.properties index bb262db9..a09f136b 100644 --- a/src/java/org/mxchange/localization/bundle_en_US.properties +++ b/src/java/org/mxchange/localization/bundle_en_US.properties @@ -340,3 +340,29 @@ ADMIN_ADD_USER_PASSWORD_NOTICE=The password is being sent to the user's email ad ADMIN_ADD_USER_EMAIL_ADDRESS_NOTICE=*2: The email address must be unique. ADMIN_ADD_USER_CUSTOMER_NUMBER_NOTICE=A customer number is being automatically created on creation of the account. BUTTON_ADMIN_ADD_USER=Add new user account +ADMIN_MENU_COUNTRY_TITLE=Country data +LINK_ADMIN_LIST_COUNTRIES=List countries +LINK_ADMIN_LIST_COUNTRIES_TITLE=List existing countries, add new country, edit and delete. +PAGE_TITLE_ADMIN_LIST_COUNTRY=Manage country data +CONTENT_TITLE_ADMIN_LIST_COUNTRY=Manage country data: +ADMIN_ADD_COUNTRY_TITLE=Add new country +ADMIN_COUNTRY_DATA_MINIMUM_NOTICE=Please fill out all fields. +ADMIN_ADD_COUNTRY_I18N_KEY_NOTICE=The key for the language package must be in all upper-case and with underscores. Example: COUNTRY_USA for the U.S.A. +ADMIN_ADD_COUNTRY_NOTICES=Notices for country data: +ADMIN_COUNTRY_PHONE_DATA_LEGEND=Country data and phone: +ADMIN_COUNTRY_PHONE_DATA_LEGEND_TITLE=Enter here data about the new country and data for phone numbers (example: dial prefix for abroad calls) +ADMIN_ENTER_COUNTRY_ABROAD_DIAL_PREFIX=Dial prefix for abroad calls: +ADMIN_ENTER_COUNTRY_CODE=2-letter country code: +ADMIN_ENTER_COUNTRY_CODE_EXAMPLE=(Example: US for U.S.A.) +ADMIN_ENTER_COUNTRY_I18N_KEY=Key for language package: +ADMIN_SELECT_COUNTRY_IS_EXTERNAL_DIAL_PREFIX_REQUIORED=Is the local dial prefix required for local calls? (mostly yes) +ADMIN_ENTER_COUNTRY_EXTERNAL_DIAL_PREFIX=Prefix for calls outside local city: (mostly 0) +ADMIN_ENTER_COUNTRY_PHONE_CODE=Dial prefix for this country: +ADMIN_ENTER_COUNTRY_PHONE_CODE_EXAMPLE=(Example: 1 for U.S.A.) +BUTTON_ADMIN_ADD_COUNTRY=Add country data +ADMIN_LIST_COUNTRY_DATA_COUNTRY_ID=Id number: +ADMIN_LIST_COUNTRY_DATA_COUNTRY_CODE=Country code: +ADMIN_LIST_COUNTRY_DATA_COUNTRY_EXTERNAL_DIAL_PREFIX=Dial prefix outside: +ADMIN_LIST_COUNTRY_DATA_COUNTRY_NAME=Country: +ADMIN_LINK_EDIT_DELETE_COUNTRY_TITLE=Edit or delete country +COUNTRY_GERMANY=Germany diff --git a/src/java/org/mxchange/pizzaapplication/beans/country/PizzaAdminCountryWebApplicationBean.java b/src/java/org/mxchange/pizzaapplication/beans/country/PizzaAdminCountryWebApplicationBean.java new file mode 100644 index 00000000..e3663743 --- /dev/null +++ b/src/java/org/mxchange/pizzaapplication/beans/country/PizzaAdminCountryWebApplicationBean.java @@ -0,0 +1,256 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package org.mxchange.pizzaapplication.beans.country; + +import java.util.Iterator; +import java.util.List; +import java.util.Objects; +import javax.enterprise.context.ApplicationScoped; +import javax.faces.view.facelets.FaceletException; +import javax.inject.Inject; +import javax.inject.Named; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import org.mxchange.jcountry.data.Country; +import org.mxchange.jcountry.data.CountryData; +import org.mxchange.jcountry.data.CountrySingletonBeanRemote; +import org.mxchange.jcountry.exceptions.CountryAlreadyAddedException; + +/** + * An administrative country bean + *

+ * @author Roland Haeder + */ +@Named ("adminCountryController") +@ApplicationScoped +public class PizzaAdminCountryWebApplicationBean implements PizzaAdminCountryWebApplicationController { + + /** + * Serial number + */ + private static final long serialVersionUID = 18_598_175_719_603L; + + /** + * Abroad dial prefix + */ + private String countryAbroadDialPrefix; + + /** + * Remote country EJB + */ + private CountrySingletonBeanRemote countryBean; + + /** + * 2-letter country code + */ + private String countryCode; + + /** + * Regular country controller + */ + @Inject + private PizzaCountryWebApplicationController countryController; + + /** + * Local dial prefix + */ + private String countryExternalDialPrefix; + + /** + * i18n bundle key + */ + private String countryI18nKey; + + /** + * Whether the local dial prefix is required to use + */ + private Boolean countryIsLocalPrefixRequired; + + /** + * Phone code + */ + private Short countryPhoneCode; + + /** + * Default constructor + */ + public PizzaAdminCountryWebApplicationBean () { + // Try this + try { + // Get initial context + Context context = new InitialContext(); + + // Try to lookup the bean + this.countryBean = (CountrySingletonBeanRemote) context.lookup("java:global/PizzaService-ejb/country!org.mxchange.jcountry.data.CountrySingletonBeanRemote"); //NOI18N + } catch (final NamingException ex) { + // Continue to throw + throw new FaceletException(ex); + } + } + + @Override + public void addCountry () { + // Create new country object + Country country = new CountryData(); + + // Add all data + country.setCountryAbroadDialPrefix(this.getCountryAbroadDialPrefix()); + country.setCountryCode(this.getCountryCode()); + country.setCountryExternalDialPrefix(this.getCountryExternalDialPrefix()); + country.setCountryI18nkey(this.getCountryI18nKey()); + country.setCountryIsLocalPrefixRequired(this.getCountryIsLocalPrefixRequired()); + country.setCountryPhoneCode(this.getCountryPhoneCode()); + + // Does it already exist? + if (this.isCountryAdded(country)) { + // Yes, then abort here + throw new FaceletException(new CountryAlreadyAddedException(country)); + } + + try { + // Send country to bean + this.countryBean.addCountry(country); + + // Clear bean + this.clear(); + } catch (final CountryAlreadyAddedException ex) { + // Throw again + throw new FaceletException(ex); + } + } + + @Override + public List allCountries () { + // Return "cached" version + return this.countryController.allCountries(); + } + + @Override + public String getCountryAbroadDialPrefix () { + return this.countryAbroadDialPrefix; + } + + @Override + public void setCountryAbroadDialPrefix (final String countryAbroadDialPrefix) { + this.countryAbroadDialPrefix = countryAbroadDialPrefix; + } + + @Override + public String getCountryCode () { + return this.countryCode; + } + + @Override + public void setCountryCode (final String countryCode) { + this.countryCode = countryCode; + } + + @Override + public String getCountryExternalDialPrefix () { + return this.countryExternalDialPrefix; + } + + @Override + public void setCountryExternalDialPrefix (final String countryExternalDialPrefix) { + this.countryExternalDialPrefix = countryExternalDialPrefix; + } + + @Override + public String getCountryI18nKey () { + return this.countryI18nKey; + } + + @Override + public void setCountryI18nKey (final String countryI18nKey) { + this.countryI18nKey = countryI18nKey; + } + + @Override + public Boolean getCountryIsLocalPrefixRequired () { + return this.countryIsLocalPrefixRequired; + } + + @Override + public void setCountryIsLocalPrefixRequired (final Boolean countryIsLocalPrefixRequired) { + this.countryIsLocalPrefixRequired = countryIsLocalPrefixRequired; + } + + @Override + public Short getCountryPhoneCode () { + return this.countryPhoneCode; + } + + @Override + public void setCountryPhoneCode (final Short countryPhoneCode) { + this.countryPhoneCode = countryPhoneCode; + } + + @Override + public boolean hasCountries () { + return (!this.allCountries().isEmpty()); + } + + /** + * Clears this bean + */ + private void clear () { + // Clear all + this.setCountryAbroadDialPrefix(null); + this.setCountryCode(null); + this.setCountryExternalDialPrefix(null); + this.setCountryI18nKey(null); + this.setCountryIsLocalPrefixRequired(null); + this.setCountryPhoneCode(null); + } + + /** + * Checks if given country is already added by iterating over the whole list + * and try to find it. + *

+ * @param country Country instance to look for + *

+ * @return Whether the country was already found + */ + private boolean isCountryAdded (final Country country) { + // Default is not found + boolean isAdded = false; + + // Now get whole ist + List countries = this.countryController.allCountries(); + + // Get iterator from it + Iterator iterator = countries.iterator(); + + // Check whole list + while (iterator.hasNext()) { + // Get next country + Country next = iterator.next(); + + // Is country code or i18n the same? + if ((Objects.equals(country.getCountryCode(), next.getCountryCode())) || (Objects.equals(country.getCountryI18nkey(), next.getCountryI18nkey()))) { + // Yes, then abort search + isAdded = true; + break; + } + } + + // Return result + return isAdded; + } + +} diff --git a/src/java/org/mxchange/pizzaapplication/beans/country/PizzaAdminCountryWebApplicationController.java b/src/java/org/mxchange/pizzaapplication/beans/country/PizzaAdminCountryWebApplicationController.java new file mode 100644 index 00000000..40b581ea --- /dev/null +++ b/src/java/org/mxchange/pizzaapplication/beans/country/PizzaAdminCountryWebApplicationController.java @@ -0,0 +1,134 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package org.mxchange.pizzaapplication.beans.country; + +import java.io.Serializable; +import java.util.List; +import org.mxchange.jcountry.data.Country; + +/** + * An interface for administrative country beans + *

+ * @author Roland Haeder + */ +public interface PizzaAdminCountryWebApplicationController extends Serializable { + + /** + * A list of all countries + *

+ * @return All countries + */ + List allCountries (); + + /** + * Adds country to all relevant beans and sends it to the EJB. + */ + void addCountry (); + + /** + * Checks whether countries has been registered + *

+ * @return Whether countries has been registered + */ + boolean hasCountries (); + + /** + * Getter for abroad dial prefix + *

+ * @return Abroad dial prefix + */ + String getCountryAbroadDialPrefix (); + + /** + * Setter for abroad dial prefix + *

+ * @param countryAbroadDialPrefix Abroad dial prefix + */ + void setCountryAbroadDialPrefix (final String countryAbroadDialPrefix); + + /** + * Getter for 2-characters country code + *

+ * @return Country code + */ + String getCountryCode (); + + /** + * Setter for 2-characters country code + *

+ * @param countryCode Country code + */ + void setCountryCode (final String countryCode); + + /** + * Getter for i18n key for country name + *

+ * @return i18n key for country name + */ + String getCountryI18nKey (); + + /** + * Setter for i18n key for country name + *

+ * @param countryI18nKey i18n key for country name + */ + void setCountryI18nKey (final String countryI18nKey); + + /** + * Getter for whether the local dial prefix is required for local calls + *

+ * @return Whether the local dial prefix is required + */ + Boolean getCountryIsLocalPrefixRequired (); + + /** + * Setter for whether the local dial prefix is required for local calls + *

+ * @param countryIsLocalPrefixRequired Whether the local dial prefix is + * required + */ + void setCountryIsLocalPrefixRequired (final Boolean countryIsLocalPrefixRequired); + + /** + * Getter for external dial prefix + *

+ * @return External dial prefix + */ + String getCountryExternalDialPrefix (); + + /** + * Setter for external dial prefix + *

+ * @param countryExternalDialPrefix External dial prefix + */ + void setCountryExternalDialPrefix (final String countryExternalDialPrefix); + + /** + * Getter for country code (example: 49 for Germany, 63 for Philippines) + *

+ * @return Dial number without prefix + */ + Short getCountryPhoneCode (); + + /** + * Setter for country code (example: 49 for Germany, 63 for Philippines) + *

+ * @param countryPhoneCode Country code + */ + void setCountryPhoneCode (final Short countryPhoneCode); + +} diff --git a/web/WEB-INF/faces-config.xml b/web/WEB-INF/faces-config.xml index e4a0b399..d6344a02 100644 --- a/web/WEB-INF/faces-config.xml +++ b/web/WEB-INF/faces-config.xml @@ -119,6 +119,10 @@ admin_add_user /admin/admin_user_add.xhtml + + admin_list_countries + /admin/admin_country_list.xhtml + /user/login.xhtml @@ -213,4 +217,11 @@ /login/login_data_saved.xhtml + + /admin/admin_country_list.xhtml + + admin_edit_country + /admin/admin_country_edit.xhtml + + diff --git a/web/WEB-INF/templates/admin/admin_form_country_data.tpl b/web/WEB-INF/templates/admin/admin_form_country_data.tpl new file mode 100644 index 00000000..00f51423 --- /dev/null +++ b/web/WEB-INF/templates/admin/admin_form_country_data.tpl @@ -0,0 +1,106 @@ + + + +

+ #{msg.ADMIN_COUNTRY_DATA_MINIMUM_NOTICE} +
+ +
+
+ #{msg.ADMIN_COUNTRY_PHONE_DATA_LEGEND} + +
+
+ +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ + + + + +
+ +
+
+ +
+
+ +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+ +
+
+ +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ + + + + +
+ +
+
+
+
+ diff --git a/web/WEB-INF/templates/admin/admin_form_personal_data.tpl b/web/WEB-INF/templates/admin/admin_form_personal_data.tpl index 23eca94f..fad545df 100644 --- a/web/WEB-INF/templates/admin/admin_form_personal_data.tpl +++ b/web/WEB-INF/templates/admin/admin_form_personal_data.tpl @@ -126,7 +126,7 @@
- + @@ -174,7 +174,7 @@
- + diff --git a/web/WEB-INF/templates/admin/admin_menu.tpl b/web/WEB-INF/templates/admin/admin_menu.tpl index b028c673..0463ea64 100644 --- a/web/WEB-INF/templates/admin/admin_menu.tpl +++ b/web/WEB-INF/templates/admin/admin_menu.tpl @@ -26,6 +26,14 @@
  • + + +
      +
    • +
    + diff --git a/web/WEB-INF/templates/generic/form_personal_data.tpl b/web/WEB-INF/templates/generic/form_personal_data.tpl index cf574819..bb38e72f 100644 --- a/web/WEB-INF/templates/generic/form_personal_data.tpl +++ b/web/WEB-INF/templates/generic/form_personal_data.tpl @@ -130,7 +130,7 @@
    - + @@ -178,7 +178,7 @@
    - + diff --git a/web/admin/admin_country_delete.xhtml b/web/admin/admin_country_delete.xhtml new file mode 100644 index 00000000..70c22343 --- /dev/null +++ b/web/admin/admin_country_delete.xhtml @@ -0,0 +1,20 @@ + + + + + + #{msg.PAGE_TITLE_ADMIN_DELETE_COUNTRY} + + + #{msg.CONTENT_TITLE_ADMIN_DELETE_COUNTRY} + + + + Here goes your content. + + + diff --git a/web/admin/admin_country_edit.xhtml b/web/admin/admin_country_edit.xhtml new file mode 100644 index 00000000..00157901 --- /dev/null +++ b/web/admin/admin_country_edit.xhtml @@ -0,0 +1,20 @@ + + + + + + #{msg.PAGE_TITLE_ADMIN_EDIT_COUNTRY} + + + #{msg.CONTENT_TITLE_ADMIN_EDIT_COUNTRY} + + + + Here goes your content. + + + diff --git a/web/admin/admin_country_list.xhtml b/web/admin/admin_country_list.xhtml new file mode 100644 index 00000000..c051c3dc --- /dev/null +++ b/web/admin/admin_country_list.xhtml @@ -0,0 +1,68 @@ + + + + + + #{msg.PAGE_TITLE_ADMIN_LIST_COUNTRY} + + + #{msg.CONTENT_TITLE_ADMIN_LIST_COUNTRY} + + + + + + #{msg.ADMIN_LIST_COUNTRY_DATA_COUNTRY_ID} + + + + + + + + #{msg.ADMIN_LIST_COUNTRY_DATA_COUNTRY_CODE} + + + + + + #{msg.ADMIN_LIST_COUNTRY_DATA_COUNTRY_EXTERNAL_DIAL_PREFIX} + + + + + + #{msg.ADMIN_LIST_COUNTRY_DATA_COUNTRY_NAME} + + + + + + +
    +
    + #{msg.ADMIN_ADD_COUNTRY_TITLE} +
    + + + + +
    + +
    + #{msg.ADMIN_ADD_COUNTRY_NOTICES} +
      +
    • #{msg.ADMIN_ADD_COUNTRY_I18N_KEY_NOTICE}
    • +
    +
    +
    +
    +
    + diff --git a/web/resources/css/cssLayout.css b/web/resources/css/cssLayout.css index 22a6f9f4..dbc9c59d 100644 --- a/web/resources/css/cssLayout.css +++ b/web/resources/css/cssLayout.css @@ -56,7 +56,7 @@ div, table { text-decoration : underline; } -table, .table { +table, .table, .table_medium { margin: 0px; padding: 0px; } @@ -65,6 +65,10 @@ table, .table { width: 500px; } +.table_medium { + width: 700px; +} + .table_big { width: 100%; } @@ -98,6 +102,18 @@ table, .table { float: right; } +.table_left_medium { + width: 300px; + min-height: 20px; + float: left; +} + +.table_right_medium { + width: 250px; + min-height: 20px; + float: right; +} + .para { padding: 5px 5px 5px 5px; }