From: http://dev.21tx.com/2005/01/18/14251.html
//转载加注:datawindow经过我三年的使用,是如此方便快捷。虽然powerj不在使用,但现在pb11和datawindow.net再显风光。datawindow以控件的面目出现在.net里,可以说真是无处不在。如此简单好用的东西很多人不用,上次我一个朋友居然试图给一个同学提供delphi版的report tool for PB,让我"痛斥"了一番。归结其原因,还是sybase没宣传好。可以说任何程序,特别是java这样的不长于UI编写的语言,在jBuilder和datawindow的作用下,还是很容易写一个界面和数据操作的。
*/////////////////////////////////////////////////////////////////////////
*
* This is a basic Java datawindow example.
* I want explaine you how to use a datawindow control for java development.
* (its so basic...)
*
* Autor:
* David Arcia 09-09-2002 ([email protected])
*
//////////////////////////////////////////////////////////////////////////*/
import javax.Swing.JOptionPane;
import javax.swing.JFrame;
import powersoft.datawindow.JDataWindowControl;
import powersoft.datawindow.Blob;
import powersoft.powerj.db.java_sql.Transaction;
public class JDataWindow extends JFrame{
//The datawindow
private JDataWindowControl dwcActual;
//The powerbuilder library path (where dataobjects are stored)
private final String LIBRERIA = new String("C:/PB7/java.pbl");
//Transaction objetc for database connection
private Transaction trans;
//Contructor
public JDataWindow() {
//New datawindow control
dwcActual = getDataWindow("dw_products",true,true,true);
//Not null ?
if(dwcActual == null) return;
}//ends method
/********************************************************************************
* CONNECTION USING POWERSOFT TRANSACTION OBJECT (as SQLCA in PowerBuilder)
********************************************************************************/
//This method connect with database (by example, a Oracle database)
public boolean setConnect(){
trans = new Transaction();
trans.reGISterDriver( "oracle.JDBC.driver.OracleDriver" );
trans.setDataSource("jdbc:oracle:thin:@192.168.22.10:1521:FALCON");
trans.setUserID( "rjimenez" );
trans.setPassword( "defalcon" );
//Error ?
if(!trans.connect()){
System.err.println("Connection failed.");
return false;
}
return true;
}//ends method
/********************************************************************************
* JAVA DATAWINDOW'S CREATION
********************************************************************************/
//Create a datawindow
public JDataWindowControl getDataWindow(String dataobject){
JDataWindowControl dwc = new JDataWindowControl();
//Assign a datawindow library
dwc.setSourceFileName(LIBRERIA);
//Assign a datawindow object to the dw control
dwc.setDataWindowObjectName(dataobject);
//Some properties...
dwc.setVScroll( true );
dwc.insertRow(0);
//Assign the transaction object to dw
dwc.setTransaction(trans);
//return object created
return dwc;
}//ends method
//Optional...Method for row selection
public void selectRow(int row){
if(row > 0){
dwcActual.selectRow(0,false);
dwcActual.selectRow(row,true);
dwcActual.scrollToRow(row);
dwcActual.setRow(row);
}
}//ends method
//Optional... for to make a datawindow editable or not
public void setEditable(JDataWindowControl dwc, boolean editar){
//Accept text
dwcActual.acceptText();
//get column number
int cols = Integer.parseInt(dwc.describe("Datawindow.column.count"));
//////////////////////////////////////////////////////////////////////////
String indicador = (editar) ? "1" : "0";
//////////////////////////////////////////////////////////////////////////
editable = indicador == "1";
//Change the editable porperty
for(int cont=1; cont <= cols; cont++){
dwc.modify("#" + cont + ".TabSequence = " + indicador) ;
}
}//ends method
//Optional... Insert new row to dataWindows end.
public void getNewRow(){
int row=dwcActual.insertRow(0);
selectRow(row);
}//final de metodo
//Optional... Delete a datawindow row
public void deleteRow(){
int boton=JOptionPane.showConfirmDialog(null,"Delete actual row ?", "Deleting",
JOptionPane.YES_NO_OPTION);
if(boton == 0) dwcActual.deleteRow(dwcActual.getRow());
}//Fin de metodo
/********************************************************************************
* THIS ARE THE DATAWINDOW'S EVENT MANAGERS
*
* The events that support datawindow are clasificated in differents interfaces
* according it function.
*
********************************************************************************
Interfaces:
MouseListener,FocusListener,DatabaseListener,EditChangedListener,
ItemListener,PrintListener,RowChangeListener, etc...
Datawindow events:
public void leftButtonDoubleClick (MouseEvent event){}
public void leftButtonClick (MouseEvent event){}
public void leftButtonDown ( MouseEvent event){}
public void leftButtonUp ( MouseEvent event){}
public void middleButtonClick ( MouseEvent event){}
public void middleButtonDoubleClick ( MouseEvent event){}
public void mouseMove ( MouseEvent event){}
public void rightButtonClick ( MouseEvent event){}
public void rightButtonDoubleClick ( MouseEvent event){}
public void rightButtonDown ( MouseEvent event){}
public void rightButtonUp ( MouseEvent event){}
public void getFocus ( FocusEvent event){}
public void loseFocus ( FocusEvent event){}
public void DBError ( DatabaseEvent event){}
public void SQLPreview ( DatabaseEvent event){}
public void editChanged ( EditChangedEvent event){}
public void itemChanged ( ItemEvent event){}
public void itemChangeAccepted ( ItemEvent event){}
public void itemError ( ItemEvent event){}
public void itemFocusChanged ( ItemEvent event){}
public void printEnding ( PrintEvent event){}
public void printMarginChanging ( PrintEvent event){}
public void printPageStarting ( PrintEvent event){}
public void printStarting ( PrintEvent event){}
public void retrieveEnd ( RetrieveEvent event){}
public void retrieveRow ( RetrieveEvent event){}
public void retrieveStart ( RetrieveEvent event){}
public void rowChanged ( RowChangeEvent event){}
public void rowChanging ( RowChangeEvent event){}
etc...
********************************************************************************/
}//ends classe