Refactor custom form - ID: 2787613 for Translation Import/Export
This commit is contained in:
parent
1fead30f6c
commit
e2168bccef
|
@ -261,10 +261,12 @@ public class Translation
|
||||||
catch (SQLException e)
|
catch (SQLException e)
|
||||||
{
|
{
|
||||||
log.log(Level.SEVERE, sql.toString(), e);
|
log.log(Level.SEVERE, sql.toString(), e);
|
||||||
|
return e.toString();
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
log.log(Level.SEVERE, "", e);
|
log.log(Level.SEVERE, "", e);
|
||||||
|
return e.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
|
|
|
@ -0,0 +1,134 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2009 Low Heng Sin *
|
||||||
|
* Copyright (C) 2009 Idalica Corporation *
|
||||||
|
* This program is free software; you can redistribute it and/or modify it *
|
||||||
|
* under the terms version 2 of the GNU General Public License as published *
|
||||||
|
* by the Free Software Foundation. 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 General Public License for more details. *
|
||||||
|
* You should have received a copy of the GNU General Public License along *
|
||||||
|
* with this program; if not, write to the Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
||||||
|
*****************************************************************************/
|
||||||
|
package org.compiere.install;
|
||||||
|
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.compiere.apps.IStatusBar;
|
||||||
|
import org.compiere.util.CLogger;
|
||||||
|
import org.compiere.util.DB;
|
||||||
|
import org.compiere.util.KeyNamePair;
|
||||||
|
import org.compiere.util.ValueNamePair;
|
||||||
|
|
||||||
|
|
||||||
|
public class TranslationController
|
||||||
|
{
|
||||||
|
public TranslationController()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Logger */
|
||||||
|
public static CLogger log = CLogger.getCLogger(TranslationController.class);
|
||||||
|
/** Window No */
|
||||||
|
public int m_WindowNo = 0;
|
||||||
|
|
||||||
|
public ArrayList<KeyNamePair> getClientList()
|
||||||
|
{
|
||||||
|
ArrayList<KeyNamePair> list = new ArrayList<KeyNamePair>();
|
||||||
|
|
||||||
|
list.add(new KeyNamePair (-1, ""));
|
||||||
|
String sql = "SELECT Name, AD_Client_ID "
|
||||||
|
+ "FROM AD_Client "
|
||||||
|
+ "WHERE IsActive='Y' "
|
||||||
|
+ "ORDER BY AD_Client_ID";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
PreparedStatement pstmt = DB.prepareStatement(sql, null);
|
||||||
|
ResultSet rs = pstmt.executeQuery();
|
||||||
|
while (rs.next())
|
||||||
|
{
|
||||||
|
KeyNamePair kp = new KeyNamePair (rs.getInt(2), rs.getString(1));
|
||||||
|
list.add(kp);
|
||||||
|
}
|
||||||
|
rs.close();
|
||||||
|
pstmt.close();
|
||||||
|
}
|
||||||
|
catch (SQLException e)
|
||||||
|
{
|
||||||
|
log.log(Level.SEVERE, sql, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<ValueNamePair> getLanguageList()
|
||||||
|
{
|
||||||
|
ArrayList<ValueNamePair> list = new ArrayList<ValueNamePair>();
|
||||||
|
|
||||||
|
// Fill Language
|
||||||
|
String sql = "SELECT Name, AD_Language "
|
||||||
|
+ "FROM AD_Language "
|
||||||
|
+ "WHERE IsActive='Y' AND (IsSystemLanguage='Y' OR IsBaseLanguage='Y')"
|
||||||
|
+ "ORDER BY Name";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
PreparedStatement pstmt = DB.prepareStatement(sql, null);
|
||||||
|
ResultSet rs = pstmt.executeQuery();
|
||||||
|
while (rs.next())
|
||||||
|
{
|
||||||
|
ValueNamePair vp = new ValueNamePair (rs.getString(2), rs.getString(1));
|
||||||
|
list.add(vp);
|
||||||
|
}
|
||||||
|
rs.close();
|
||||||
|
pstmt.close();
|
||||||
|
}
|
||||||
|
catch (SQLException e)
|
||||||
|
{
|
||||||
|
log.log(Level.SEVERE, sql, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<ValueNamePair> getTableList()
|
||||||
|
{
|
||||||
|
ArrayList<ValueNamePair> list = new ArrayList<ValueNamePair>();
|
||||||
|
|
||||||
|
// Fill Table
|
||||||
|
list.add(new ValueNamePair ("", ""));
|
||||||
|
String sql = "SELECT Name, TableName "
|
||||||
|
+ "FROM AD_Table "
|
||||||
|
+ "WHERE TableName LIKE '%_Trl' AND TableName<>'AD_Column_Trl' "
|
||||||
|
+ "ORDER BY Name";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
PreparedStatement pstmt = DB.prepareStatement(sql, null);
|
||||||
|
ResultSet rs = pstmt.executeQuery();
|
||||||
|
while (rs.next())
|
||||||
|
{
|
||||||
|
ValueNamePair vp = new ValueNamePair (rs.getString(2), rs.getString(1));
|
||||||
|
list.add(vp);
|
||||||
|
}
|
||||||
|
rs.close();
|
||||||
|
pstmt.close();
|
||||||
|
}
|
||||||
|
catch (SQLException e)
|
||||||
|
{
|
||||||
|
log.log(Level.SEVERE, sql, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatusBar(IStatusBar statusBar)
|
||||||
|
{
|
||||||
|
// Info
|
||||||
|
statusBar.setStatusLine(" ");
|
||||||
|
statusBar.setStatusDB(" ");
|
||||||
|
} // dynInit
|
||||||
|
}
|
|
@ -24,9 +24,7 @@ import java.awt.Insets;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.sql.PreparedStatement;
|
import java.util.ArrayList;
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
|
@ -40,7 +38,6 @@ import org.compiere.apps.form.FormFrame;
|
||||||
import org.compiere.apps.form.FormPanel;
|
import org.compiere.apps.form.FormPanel;
|
||||||
import org.compiere.swing.CPanel;
|
import org.compiere.swing.CPanel;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.DB;
|
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.Ini;
|
import org.compiere.util.Ini;
|
||||||
import org.compiere.util.KeyNamePair;
|
import org.compiere.util.KeyNamePair;
|
||||||
|
@ -53,7 +50,7 @@ import org.compiere.util.ValueNamePair;
|
||||||
* @author Jorg Janke
|
* @author Jorg Janke
|
||||||
* @version $Id: TranslationDialog.java,v 1.3 2006/07/30 00:51:28 jjanke Exp $
|
* @version $Id: TranslationDialog.java,v 1.3 2006/07/30 00:51:28 jjanke Exp $
|
||||||
*/
|
*/
|
||||||
public class TranslationDialog extends CPanel
|
public class VTranslationDialog extends TranslationController
|
||||||
implements FormPanel, ActionListener
|
implements FormPanel, ActionListener
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@ -61,21 +58,21 @@ public class TranslationDialog extends CPanel
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = -5072470836657762574L;
|
private static final long serialVersionUID = -5072470836657762574L;
|
||||||
|
|
||||||
|
private CPanel panel = new CPanel();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TranslationDialog Constructor.
|
* TranslationDialog Constructor.
|
||||||
* (Initiated via init())
|
* (Initiated via init())
|
||||||
*/
|
*/
|
||||||
public TranslationDialog()
|
public VTranslationDialog()
|
||||||
{
|
{
|
||||||
} // TranslationDialog
|
} // TranslationDialog
|
||||||
|
|
||||||
/** Window No */
|
|
||||||
private int m_WindowNo = 0;
|
|
||||||
/** FormFrame */
|
/** FormFrame */
|
||||||
private FormFrame m_frame;
|
private FormFrame m_frame;
|
||||||
/** Logger */
|
/** Logger */
|
||||||
private static CLogger log = CLogger.getCLogger(TranslationDialog.class);
|
private static CLogger log = CLogger.getCLogger(VTranslationDialog.class);
|
||||||
//
|
//
|
||||||
private GridBagLayout mainLayout = new GridBagLayout();
|
private GridBagLayout mainLayout = new GridBagLayout();
|
||||||
private JComboBox cbLanguage = new JComboBox();
|
private JComboBox cbLanguage = new JComboBox();
|
||||||
|
@ -96,7 +93,7 @@ public class TranslationDialog extends CPanel
|
||||||
*/
|
*/
|
||||||
private void jbInit() throws Exception
|
private void jbInit() throws Exception
|
||||||
{
|
{
|
||||||
this.setLayout(mainLayout);
|
panel.setLayout(mainLayout);
|
||||||
lClient.setText(Msg.translate(Env.getCtx(), "AD_Client_ID"));
|
lClient.setText(Msg.translate(Env.getCtx(), "AD_Client_ID"));
|
||||||
lLanguage.setText(Msg.translate(Env.getCtx(), "AD_Language"));
|
lLanguage.setText(Msg.translate(Env.getCtx(), "AD_Language"));
|
||||||
lLanguage.setToolTipText(Msg.translate(Env.getCtx(), "IsSystemLanguage"));
|
lLanguage.setToolTipText(Msg.translate(Env.getCtx(), "IsSystemLanguage"));
|
||||||
|
@ -107,21 +104,21 @@ public class TranslationDialog extends CPanel
|
||||||
bImport.setText(Msg.getMsg(Env.getCtx(), "Import"));
|
bImport.setText(Msg.getMsg(Env.getCtx(), "Import"));
|
||||||
bImport.addActionListener(this);
|
bImport.addActionListener(this);
|
||||||
//
|
//
|
||||||
this.add(cbLanguage, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0
|
panel.add(cbLanguage, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0
|
||||||
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));
|
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));
|
||||||
this.add(lLanguage, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
|
panel.add(lLanguage, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
|
||||||
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
|
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
|
||||||
this.add(lTable, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
|
panel.add(lTable, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
|
||||||
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
|
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
|
||||||
this.add(cbTable, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0
|
panel.add(cbTable, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0
|
||||||
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));
|
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));
|
||||||
this.add(bExport, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0
|
panel.add(bExport, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0
|
||||||
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
|
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
|
||||||
this.add(bImport, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0
|
panel.add(bImport, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0
|
||||||
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
|
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
|
||||||
this.add(lClient, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
|
panel.add(lClient, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
|
||||||
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
|
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
|
||||||
this.add(cbClient, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0
|
panel.add(cbClient, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0
|
||||||
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));
|
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));
|
||||||
} // jbInit
|
} // jbInit
|
||||||
|
|
||||||
|
@ -132,76 +129,22 @@ public class TranslationDialog extends CPanel
|
||||||
private void dynInit()
|
private void dynInit()
|
||||||
{
|
{
|
||||||
// Fill Client
|
// Fill Client
|
||||||
cbClient.addItem(new KeyNamePair (-1, ""));
|
ArrayList<KeyNamePair> clients = getClientList();
|
||||||
String sql = "SELECT Name, AD_Client_ID "
|
for(KeyNamePair client: clients)
|
||||||
+ "FROM AD_Client "
|
cbClient.addItem(client);
|
||||||
+ "WHERE IsActive='Y' "
|
|
||||||
+ "ORDER BY AD_Client_ID";
|
|
||||||
try
|
|
||||||
{
|
|
||||||
PreparedStatement pstmt = DB.prepareStatement(sql, null);
|
|
||||||
ResultSet rs = pstmt.executeQuery();
|
|
||||||
while (rs.next())
|
|
||||||
{
|
|
||||||
KeyNamePair kp = new KeyNamePair (rs.getInt(2), rs.getString(1));
|
|
||||||
cbClient.addItem(kp);
|
|
||||||
}
|
|
||||||
rs.close();
|
|
||||||
pstmt.close();
|
|
||||||
}
|
|
||||||
catch (SQLException e)
|
|
||||||
{
|
|
||||||
log.log(Level.SEVERE, sql, e);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fill Language
|
// Fill Language
|
||||||
sql = "SELECT Name, AD_Language "
|
ArrayList<ValueNamePair> languages = getLanguageList();
|
||||||
+ "FROM AD_Language "
|
for(ValueNamePair language: languages)
|
||||||
+ "WHERE IsActive='Y' AND (IsSystemLanguage='Y' OR IsBaseLanguage='Y')"
|
cbLanguage.addItem(language);
|
||||||
+ "ORDER BY Name";
|
|
||||||
try
|
|
||||||
{
|
|
||||||
PreparedStatement pstmt = DB.prepareStatement(sql, null);
|
|
||||||
ResultSet rs = pstmt.executeQuery();
|
|
||||||
while (rs.next())
|
|
||||||
{
|
|
||||||
ValueNamePair vp = new ValueNamePair (rs.getString(2), rs.getString(1));
|
|
||||||
cbLanguage.addItem(vp);
|
|
||||||
}
|
|
||||||
rs.close();
|
|
||||||
pstmt.close();
|
|
||||||
}
|
|
||||||
catch (SQLException e)
|
|
||||||
{
|
|
||||||
log.log(Level.SEVERE, sql, e);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fill Table
|
// Fill Table
|
||||||
cbTable.addItem(new ValueNamePair ("", ""));
|
ArrayList<ValueNamePair> tables = getTableList();
|
||||||
sql = "SELECT Name, TableName "
|
for(ValueNamePair table: tables)
|
||||||
+ "FROM AD_Table "
|
cbTable.addItem(table);
|
||||||
+ "WHERE TableName LIKE '%_Trl' AND TableName<>'AD_Column_Trl' "
|
|
||||||
+ "ORDER BY Name";
|
|
||||||
try
|
|
||||||
{
|
|
||||||
PreparedStatement pstmt = DB.prepareStatement(sql, null);
|
|
||||||
ResultSet rs = pstmt.executeQuery();
|
|
||||||
while (rs.next())
|
|
||||||
{
|
|
||||||
ValueNamePair vp = new ValueNamePair (rs.getString(2), rs.getString(1));
|
|
||||||
cbTable.addItem(vp);
|
|
||||||
}
|
|
||||||
rs.close();
|
|
||||||
pstmt.close();
|
|
||||||
}
|
|
||||||
catch (SQLException e)
|
|
||||||
{
|
|
||||||
log.log(Level.SEVERE, sql, e);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Info
|
// Info
|
||||||
statusBar.setStatusLine(" ");
|
setStatusBar(statusBar);
|
||||||
statusBar.setStatusDB(" ");
|
|
||||||
} // dynInit
|
} // dynInit
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -219,7 +162,7 @@ public class TranslationDialog extends CPanel
|
||||||
{
|
{
|
||||||
jbInit();
|
jbInit();
|
||||||
dynInit();
|
dynInit();
|
||||||
frame.getContentPane().add(this, BorderLayout.CENTER);
|
frame.getContentPane().add(panel, BorderLayout.CENTER);
|
||||||
frame.getContentPane().add(statusBar, BorderLayout.SOUTH);
|
frame.getContentPane().add(statusBar, BorderLayout.SOUTH);
|
||||||
}
|
}
|
||||||
catch(Exception ex)
|
catch(Exception ex)
|
||||||
|
@ -261,33 +204,37 @@ public class TranslationDialog extends CPanel
|
||||||
JFileChooser chooser = new JFileChooser(startDir);
|
JFileChooser chooser = new JFileChooser(startDir);
|
||||||
chooser.setMultiSelectionEnabled(false);
|
chooser.setMultiSelectionEnabled(false);
|
||||||
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
||||||
int returnVal = imp ? chooser.showOpenDialog(this) : chooser.showSaveDialog(this);
|
int returnVal = imp ? chooser.showOpenDialog(panel) : chooser.showSaveDialog(panel);
|
||||||
if (returnVal != JFileChooser.APPROVE_OPTION)
|
if (returnVal != JFileChooser.APPROVE_OPTION)
|
||||||
return;
|
return;
|
||||||
String directory = chooser.getSelectedFile().getAbsolutePath();
|
String directory = chooser.getSelectedFile().getAbsolutePath();
|
||||||
//
|
//
|
||||||
statusBar.setStatusLine(directory);
|
statusBar.setStatusLine(directory);
|
||||||
this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
panel.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||||
Translation t = new Translation(Env.getCtx());
|
Translation t = new Translation(Env.getCtx());
|
||||||
String msg = t.validateLanguage(AD_Language.getValue());
|
String msg = t.validateLanguage(AD_Language.getValue());
|
||||||
if (msg.length() > 0)
|
if (msg.length() > 0)
|
||||||
{
|
{
|
||||||
ADialog.error(m_WindowNo, this, "LanguageSetupError", msg);
|
ADialog.error(m_WindowNo, panel, "LanguageSetupError", msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// All Tables
|
// All Tables
|
||||||
if (AD_Table.getValue().equals(""))
|
if (AD_Table.getValue().equals(""))
|
||||||
{
|
{
|
||||||
|
msg = null;
|
||||||
|
|
||||||
for (int i = 1; i < cbTable.getItemCount(); i++)
|
for (int i = 1; i < cbTable.getItemCount(); i++)
|
||||||
{
|
{
|
||||||
AD_Table = (ValueNamePair)cbTable.getItemAt(i);
|
AD_Table = (ValueNamePair)cbTable.getItemAt(i);
|
||||||
msg = null;
|
|
||||||
msg = imp
|
msg = imp
|
||||||
? t.importTrl (directory, AD_Client_ID, AD_Language.getValue(), AD_Table.getValue())
|
? t.importTrl (directory, AD_Client_ID, AD_Language.getValue(), AD_Table.getValue())
|
||||||
: t.exportTrl (directory, AD_Client_ID, AD_Language.getValue(), AD_Table.getValue());
|
: t.exportTrl (directory, AD_Client_ID, AD_Language.getValue(), AD_Table.getValue());
|
||||||
statusBar.setStatusLine(msg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(msg == null || msg.length() == 0)
|
||||||
|
msg = (imp ? "Import" : "Export") + " Successful. [" + directory + "]";
|
||||||
|
|
||||||
statusBar.setStatusLine(directory);
|
statusBar.setStatusLine(directory);
|
||||||
}
|
}
|
||||||
else // single table
|
else // single table
|
||||||
|
@ -296,10 +243,14 @@ public class TranslationDialog extends CPanel
|
||||||
msg = imp
|
msg = imp
|
||||||
? t.importTrl (directory, AD_Client_ID, AD_Language.getValue(), AD_Table.getValue())
|
? t.importTrl (directory, AD_Client_ID, AD_Language.getValue(), AD_Table.getValue())
|
||||||
: t.exportTrl (directory, AD_Client_ID, AD_Language.getValue(), AD_Table.getValue());
|
: t.exportTrl (directory, AD_Client_ID, AD_Language.getValue(), AD_Table.getValue());
|
||||||
|
|
||||||
|
if(msg == null || msg.length() == 0)
|
||||||
|
msg = (imp ? "Import" : "Export") + " Successful. [" + directory + "]";
|
||||||
|
|
||||||
statusBar.setStatusLine(msg);
|
statusBar.setStatusLine(msg);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
this.setCursor(Cursor.getDefaultCursor());
|
panel.setCursor(Cursor.getDefaultCursor());
|
||||||
} // actionPerformed
|
} // actionPerformed
|
||||||
|
|
||||||
} // Translation
|
} // Translation
|
|
@ -0,0 +1 @@
|
||||||
|
UPDATE AD_Form SET ClassName = 'org.compiere.install.VTranslationDialog' WHERE AD_Form_ID = 109;
|
|
@ -0,0 +1 @@
|
||||||
|
UPDATE AD_Form SET ClassName = 'org.compiere.install.VTranslationDialog' WHERE AD_Form_ID = 109;
|
|
@ -0,0 +1,237 @@
|
||||||
|
package org.adempiere.webui.install;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.adempiere.webui.LayoutUtils;
|
||||||
|
import org.adempiere.webui.component.Button;
|
||||||
|
import org.adempiere.webui.component.FolderBrowser;
|
||||||
|
import org.adempiere.webui.component.Grid;
|
||||||
|
import org.adempiere.webui.component.GridFactory;
|
||||||
|
import org.adempiere.webui.component.Label;
|
||||||
|
import org.adempiere.webui.component.Listbox;
|
||||||
|
import org.adempiere.webui.component.ListboxFactory;
|
||||||
|
import org.adempiere.webui.component.Panel;
|
||||||
|
import org.adempiere.webui.component.Row;
|
||||||
|
import org.adempiere.webui.component.Rows;
|
||||||
|
import org.adempiere.webui.panel.ADForm;
|
||||||
|
import org.adempiere.webui.panel.CustomForm;
|
||||||
|
import org.adempiere.webui.panel.IFormController;
|
||||||
|
import org.adempiere.webui.panel.StatusBarPanel;
|
||||||
|
import org.adempiere.webui.session.SessionManager;
|
||||||
|
import org.adempiere.webui.window.FDialog;
|
||||||
|
import org.compiere.install.Translation;
|
||||||
|
import org.compiere.install.TranslationController;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.KeyNamePair;
|
||||||
|
import org.compiere.util.Msg;
|
||||||
|
import org.compiere.util.ValueNamePair;
|
||||||
|
import org.zkoss.zk.ui.event.Event;
|
||||||
|
import org.zkoss.zk.ui.event.EventListener;
|
||||||
|
import org.zkoss.zkex.zul.Borderlayout;
|
||||||
|
import org.zkoss.zkex.zul.Center;
|
||||||
|
import org.zkoss.zkex.zul.South;
|
||||||
|
import org.zkoss.zul.Div;
|
||||||
|
|
||||||
|
public class WTranslationDialog extends TranslationController implements IFormController, EventListener {
|
||||||
|
|
||||||
|
private CustomForm form = new CustomForm();
|
||||||
|
|
||||||
|
public WTranslationDialog()
|
||||||
|
{
|
||||||
|
m_WindowNo = form.getWindowNo();
|
||||||
|
Env.setContext(Env.getCtx(), form.getWindowNo(), "IsSOTrx", "Y");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
zkInit();
|
||||||
|
dynInit();
|
||||||
|
Borderlayout contentLayout = new Borderlayout();
|
||||||
|
contentLayout.setWidth("100%");
|
||||||
|
contentLayout.setHeight("100%");
|
||||||
|
form.appendChild(contentLayout);
|
||||||
|
Center center = new Center();
|
||||||
|
contentLayout.appendChild(center);
|
||||||
|
center.appendChild(centerPanel);
|
||||||
|
South south = new South();
|
||||||
|
south.setStyle("border: none");
|
||||||
|
contentLayout.appendChild(south);
|
||||||
|
south.appendChild(statusBar);
|
||||||
|
LayoutUtils.addSclass("status-border", statusBar);
|
||||||
|
south.setHeight("22px");
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
log.log(Level.SEVERE, "", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Panel centerPanel = new Panel();
|
||||||
|
private Grid centerLayout = GridFactory.newGridLayout();
|
||||||
|
|
||||||
|
private Button bExport = new Button();
|
||||||
|
private Button bImport = new Button();
|
||||||
|
|
||||||
|
private Label lClient = new Label();
|
||||||
|
private Listbox cbClient = ListboxFactory.newDropdownListbox();
|
||||||
|
private Label lLanguage = new Label();
|
||||||
|
private Listbox cbLanguage = ListboxFactory.newDropdownListbox();
|
||||||
|
private Label lTable = new Label();
|
||||||
|
private Listbox cbTable = ListboxFactory.newDropdownListbox();
|
||||||
|
private StatusBarPanel statusBar = new StatusBarPanel();
|
||||||
|
|
||||||
|
private void zkInit() throws Exception
|
||||||
|
{
|
||||||
|
centerPanel.appendChild(centerLayout);
|
||||||
|
|
||||||
|
lClient.setText(Msg.translate(Env.getCtx(), "AD_Client_ID"));
|
||||||
|
lLanguage.setText(Msg.translate(Env.getCtx(), "AD_Language"));
|
||||||
|
lLanguage.setTooltiptext(Msg.translate(Env.getCtx(), "IsSystemLanguage"));
|
||||||
|
lTable.setText(Msg.translate(Env.getCtx(), "AD_Table_ID"));
|
||||||
|
//
|
||||||
|
bExport.setLabel(Msg.getMsg(Env.getCtx(), "Export"));
|
||||||
|
bExport.addActionListener(this);
|
||||||
|
bImport.setLabel(Msg.getMsg(Env.getCtx(), "Import"));
|
||||||
|
bImport.addActionListener(this);
|
||||||
|
|
||||||
|
Rows rows = centerLayout.newRows();
|
||||||
|
Row row = rows.newRow();
|
||||||
|
row.appendChild(lClient.rightAlign());
|
||||||
|
row.appendChild(cbClient);
|
||||||
|
|
||||||
|
row = rows.newRow();
|
||||||
|
row.appendChild(lLanguage.rightAlign());
|
||||||
|
row.appendChild(cbLanguage);
|
||||||
|
|
||||||
|
row = rows.newRow();
|
||||||
|
row.appendChild(lTable.rightAlign());
|
||||||
|
row.appendChild(cbTable);
|
||||||
|
|
||||||
|
Div div = new Div();
|
||||||
|
div.setAlign("right");
|
||||||
|
div.appendChild(bExport);
|
||||||
|
|
||||||
|
row = rows.newRow();
|
||||||
|
row.appendChild(div);
|
||||||
|
row.appendChild(bImport);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dynamic Init.
|
||||||
|
* - fill Language & Table
|
||||||
|
*/
|
||||||
|
private void dynInit()
|
||||||
|
{
|
||||||
|
// Fill Client
|
||||||
|
ArrayList<KeyNamePair> clients = getClientList();
|
||||||
|
for(KeyNamePair client: clients)
|
||||||
|
cbClient.addItem(client);
|
||||||
|
|
||||||
|
// Fill Language
|
||||||
|
ArrayList<ValueNamePair> languages = getLanguageList();
|
||||||
|
for(ValueNamePair language: languages)
|
||||||
|
cbLanguage.addItem(language);
|
||||||
|
|
||||||
|
// Fill Table
|
||||||
|
ArrayList<ValueNamePair> tables = getTableList();
|
||||||
|
for(ValueNamePair table: tables)
|
||||||
|
cbTable.addItem(table);
|
||||||
|
|
||||||
|
// Info
|
||||||
|
setStatusBar(statusBar);
|
||||||
|
} // dynInit
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dispose
|
||||||
|
*/
|
||||||
|
public void dispose()
|
||||||
|
{
|
||||||
|
SessionManager.getAppDesktop().closeActiveWindow();
|
||||||
|
} // dispose
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* Action Listener
|
||||||
|
* @param e event
|
||||||
|
*/
|
||||||
|
public void onEvent(Event e)
|
||||||
|
{
|
||||||
|
if (cbLanguage.getSelectedIndex() == -1)
|
||||||
|
{
|
||||||
|
statusBar.setStatusLine(Msg.getMsg(Env.getCtx(), "LanguageSetupError"), true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ValueNamePair AD_Language = (ValueNamePair)cbLanguage.getSelectedItem().toValueNamePair();
|
||||||
|
if (AD_Language == null)
|
||||||
|
{
|
||||||
|
statusBar.setStatusLine(Msg.getMsg(Env.getCtx(), "LanguageSetupError"), true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cbTable.getSelectedIndex() == -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ValueNamePair AD_Table = (ValueNamePair)cbTable.getSelectedItem().toValueNamePair();
|
||||||
|
if (AD_Table == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
boolean imp = (e.getTarget() == bImport);
|
||||||
|
|
||||||
|
int AD_Client_ID = -1;
|
||||||
|
KeyNamePair AD_Client = null;
|
||||||
|
if (cbTable.getSelectedIndex() != -1)
|
||||||
|
AD_Client = (KeyNamePair)cbClient.getSelectedItem().toKeyNamePair();
|
||||||
|
|
||||||
|
if (AD_Client != null)
|
||||||
|
AD_Client_ID = AD_Client.getKey();
|
||||||
|
|
||||||
|
FolderBrowser directoryDialog = new FolderBrowser(true);
|
||||||
|
String directory = directoryDialog.getPath();
|
||||||
|
|
||||||
|
if(directory == null) return;
|
||||||
|
//
|
||||||
|
statusBar.setStatusLine(directory);
|
||||||
|
|
||||||
|
Translation t = new Translation(Env.getCtx());
|
||||||
|
String msg = t.validateLanguage(AD_Language.getValue());
|
||||||
|
if (msg.length() > 0)
|
||||||
|
{
|
||||||
|
FDialog.error(m_WindowNo, form, "LanguageSetupError", msg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// All Tables
|
||||||
|
if (AD_Table.getValue().equals(""))
|
||||||
|
{
|
||||||
|
msg = null;
|
||||||
|
|
||||||
|
for (int i = 1; i < cbTable.getItemCount(); i++)
|
||||||
|
{
|
||||||
|
AD_Table = (ValueNamePair)cbTable.getItemAtIndex(i).toValueNamePair();
|
||||||
|
msg += imp
|
||||||
|
? t.importTrl (directory, AD_Client_ID, AD_Language.getValue(), AD_Table.getValue())
|
||||||
|
: t.exportTrl (directory, AD_Client_ID, AD_Language.getValue(), AD_Table.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
if(msg == null || msg.length() == 0)
|
||||||
|
msg = (imp ? "Import" : "Export") + " Successful. [" + directory + "]";
|
||||||
|
|
||||||
|
statusBar.setStatusLine(msg);
|
||||||
|
}
|
||||||
|
else // single table
|
||||||
|
{
|
||||||
|
msg = null;
|
||||||
|
msg = imp
|
||||||
|
? t.importTrl (directory, AD_Client_ID, AD_Language.getValue(), AD_Table.getValue())
|
||||||
|
: t.exportTrl (directory, AD_Client_ID, AD_Language.getValue(), AD_Table.getValue());
|
||||||
|
|
||||||
|
if(msg == null || msg.length() == 0)
|
||||||
|
msg = (imp ? "Import" : "Export") + " Successful. [" + directory + "]";
|
||||||
|
|
||||||
|
statusBar.setStatusLine(msg);
|
||||||
|
}
|
||||||
|
} // actionPerformed
|
||||||
|
|
||||||
|
public ADForm getForm() {
|
||||||
|
return form;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue