/*
*
* Copyright (C) 2007-2015 Licensed to the Comunes Association (CA) under
* one or more contributor license agreements (see COPYRIGHT for details).
* The CA licenses this file to you under the GNU Affero General Public
* License version 3, (the "License"); you may not use this file except in
* compliance with the License. This file is part of kune.
*
* 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 <http://www.gnu.org/licenses/>.
*
*/
package cc.kune.gspace.client.i18n;
import cc.kune.common.client.notify.NotifyLevelImages;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.common.shared.utils.SimpleCallback;
import cc.kune.core.client.resources.iconic.IconicResources;
import cc.kune.core.client.ui.dialogs.tabbed.AbstractTabbedDialogPanel;
import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.gspace.client.i18n.I18nTranslatorPresenter.I18nTranslatorView;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.widget.form.CheckBox;
import com.google.inject.Inject;
// TODO: Auto-generated Javadoc
/**
* The Class I18nTranslatorPanel.
*
* @author vjrj@ourproject.org (Vicente J. Ruiz Jurado)
*/
public class I18nTranslatorPanel extends AbstractTabbedDialogPanel implements I18nTranslatorView {
/** The Constant HEIGHT. */
private static final int HEIGHT = 280;
/** The Constant TRANSLATOR_ERROR_ID. */
private static final String TRANSLATOR_ERROR_ID = "i18n-trans-panel-error";
/** The Constant TRANSLATOR_PANEL_ID. */
private static final String TRANSLATOR_PANEL_ID = "i18n-trans-panel";
/** The Constant WIDTH. */
private static final int WIDTH = 650;
/** The checkbox. */
private final CheckBox checkbox;
/** The lan selector full translated panel. */
private final LanguageSelectorOnlyFullTranslatedPanel lanSelectorFullTranslatedPanel;
/** The lan selector panel. */
private final AbstractLanguageSelectorPanel lanSelectorPanel;
/** The to translate grid. */
private final I18nToTranslateGridPanel toTranslateGrid;
/** The translated grid. */
private final I18nTranslatedGridPanel translatedGrid;
/** The trans recommend. */
private final I18nTranslateRecomendPanel transRecommend;
/**
* Instantiates a new i18n translator panel.
*
* @param i18n
* the i18n
* @param images
* the images
* @param transGroup
* the trans group
* @param lanSelectorFullTranslatedPanel
* the lan selector full translated panel
* @param lanSelectorPanel
* the lan selector panel
* @param toTranslateGrid
* the to translate grid
* @param translatedGrid
* the translated grid
* @param transRecommend
* the trans recommend
* @param res
* the res
*/
@Inject
public I18nTranslatorPanel(final I18nTranslationService i18n, final NotifyLevelImages images,
final I18nTranslatorTabsCollection transGroup,
final LanguageSelectorOnlyFullTranslatedPanel lanSelectorFullTranslatedPanel,
final LanguageSelectorWithoutEnglishPanel lanSelectorPanel,
final I18nToTranslateGridPanel toTranslateGrid, final I18nTranslatedGridPanel translatedGrid,
final I18nTranslateRecomendPanel transRecommend, final IconicResources res) {
// Warning: Modal = true == you cannot select languages with mouse
super(TRANSLATOR_PANEL_ID, "", false, false, images, TRANSLATOR_ERROR_ID, i18n.t("Close"), null,
null, null, transGroup, i18n.getDirection());
setWidth(WIDTH);
setIcon(res.world());
this.lanSelectorPanel = lanSelectorPanel;
this.lanSelectorFullTranslatedPanel = lanSelectorFullTranslatedPanel;
this.toTranslateGrid = toTranslateGrid;
this.translatedGrid = translatedGrid;
this.transRecommend = transRecommend;
transRecommend.setSize(WIDTH, HEIGHT);
super.setIconCls("k-options-icon");
super.setTitle(i18n.t("Help to translate kune"));
checkbox = new CheckBox();
checkbox.setBoxLabel(i18n.t("Translate from other non-English language"));
checkbox.setValue(false);
lanSelectorFullTranslatedPanel.setVisible(false);
checkbox.addListener(Events.Change, new Listener<BaseEvent>() {
@Override
public void handleEvent(final BaseEvent be) {
final Boolean value = checkbox.getValue();
lanSelectorFullTranslatedPanel.setVisible(value);
lanSelectorFullTranslatedPanel.setLanguage(null);
refreshLangs(lanSelectorFullTranslatedPanel, lanSelectorPanel);
}
});
super.getInnerPanel().insert(checkbox, 0);
final SimpleCallback onLangChange = new SimpleCallback() {
@Override
public void onCallback() {
refreshLangs(lanSelectorFullTranslatedPanel, lanSelectorPanel);
}
};
super.getInnerPanel().insert(lanSelectorFullTranslatedPanel, 1);
lanSelectorFullTranslatedPanel.setLangTitle(i18n.t("from"));
lanSelectorFullTranslatedPanel.setLangSeparator(":");
lanSelectorFullTranslatedPanel.addChangeListener(onLangChange);
super.getInnerPanel().insert(lanSelectorPanel, 2);
lanSelectorPanel.setLangTitle(i18n.t("to"));
lanSelectorPanel.setLangSeparator(":");
lanSelectorPanel.addChangeListener(onLangChange);
}
/*
* (non-Javadoc)
*
* @see
* cc.kune.gspace.client.i18n.I18nTranslatorPresenter.I18nTranslatorView#init
* ()
*/
@Override
public void init() {
addTab(toTranslateGrid, toTranslateGrid.getTabTitle());
addTab(translatedGrid, translatedGrid.getTabTitle());
addTab(transRecommend, transRecommend.getTabTitle());
}
/**
* Refresh langs.
*
* @param lanSelectorFullTranslatedPanel
* the lan selector full translated panel
* @param lanSelectorPanel
* the lan selector panel
*/
private void refreshLangs(
final LanguageSelectorOnlyFullTranslatedPanel lanSelectorFullTranslatedPanel,
final LanguageSelectorWithoutEnglishPanel lanSelectorPanel) {
setLanguage(lanSelectorFullTranslatedPanel.getLanguage(), lanSelectorPanel.getLanguage());
}
/*
* (non-Javadoc)
*
* @see cc.kune.gspace.client.i18n.I18nTranslatorPresenter.I18nTranslatorView#
* setLanguage(cc.kune.core.shared.dto.I18nLanguageSimpleDTO)
*/
@Override
public void setLanguage(final I18nLanguageSimpleDTO currentLanguage) {
setLanguage(null, currentLanguage);
}
/**
* Sets the language.
*
* @param fromLanguage
* the from language
* @param toLanguage
* the to language
*/
public void setLanguage(final I18nLanguageSimpleDTO fromLanguage,
final I18nLanguageSimpleDTO toLanguage) {
if (checkbox.getValue() && fromLanguage != null) {
lanSelectorFullTranslatedPanel.setLanguage(fromLanguage);
} else {
lanSelectorFullTranslatedPanel.clear();
}
if (toLanguage != null) {
lanSelectorPanel.setLanguage(toLanguage);
toTranslateGrid.setLanguage(fromLanguage, toLanguage);
translatedGrid.setLanguage(fromLanguage, toLanguage);
}
}
/*
* (non-Javadoc)
*
* @see cc.kune.core.client.ui.dialogs.tabbed.AbstractTabbedDialogPanel#show()
*/
@Override
public void show() {
super.show();
}
}