You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdebindings/qtjava/javalib/examples/checklists/CheckLists.java

172 lines
5.1 KiB

/***************************************************************************
* $Id$
**
* Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
**
* This file is part of an example program for Qt. This example
* program may be used, distributed and modified without limitation.
**
****************************************************************************/
import org.kde.qt.*;
import java.util.*;
class CheckLists extends TQWidget
{
protected TQListView lv1, lv2;
protected TQLabel label;
/*
Constructor
*
Create all child widgets of the CheckList Widget
*/
CheckLists( )
{
this(null, null);
}
CheckLists( TQWidget parent, String name )
{
super( parent, name );
TQHBoxLayout lay = new TQHBoxLayout( this );
lay.setMargin( 5 );
// create a widget which layouts its childs in a column
TQVBoxLayout vbox1 = new TQVBoxLayout( lay );
vbox1.setMargin( 5 );
// First child: a Label
vbox1.addWidget( new TQLabel( "Check some items!", this ) );
// Second child: the ListView
lv1 = new TQListView( this );
vbox1.addWidget( lv1 );
lv1.addColumn( "Items" );
lv1.setRootIsDecorated( true );
// create a list with 4 ListViewItems which will be parent items of other ListViewItems
ArrayList parentList = new ArrayList();
parentList.add( new TQListViewItem( lv1, "Parent Item 1" ) );
parentList.add( new TQListViewItem( lv1, "Parent Item 2" ) );
parentList.add( new TQListViewItem( lv1, "Parent Item 3" ) );
parentList.add( new TQListViewItem( lv1, "Parent Item 4" ) );
TQListViewItem item = null;
int num = 1;
// go through the list of parent items...
for ( Iterator it = parentList.iterator(); it.hasNext(); num++ ) {
item = (TQListViewItem) it.next();
item.setOpen( true );
// ...and create 5 checkable child ListViewItems for each parent item
for ( int i = 1; i <= 5; i++ )
new TQCheckListItem( item, i + ". Child of Parent " + num, TQCheckListItem.CheckBox );
}
// Create another widget for layouting
TQVBoxLayout tmp = new TQVBoxLayout( lay );
tmp.setMargin( 5 );
// create a pushbutton
TQPushButton copy1 = new TQPushButton( " -> ", this );
tmp.addWidget( copy1 );
copy1.setMaximumWidth( copy1.sizeHint().width() );
// connect the SIGNAL clicked() of the pushbutton with the SLOT copy1to2()
connect( copy1, SIGNAL(" clicked()"), this, SLOT(" copy1to2()") );
// another widget for layouting
TQVBoxLayout vbox2 = new TQVBoxLayout( lay );
vbox2.setMargin( 5 );
// and another label
vbox2.addWidget( new TQLabel( "Check one item!", this ) );
// create the second listview
lv2 = new TQListView( this );
vbox2.addWidget( lv2 );
lv2.addColumn( "Items" );
lv2.setRootIsDecorated( true );
// another widget needed for layouting only
tmp = new TQVBoxLayout( lay );
tmp.setMargin( 5 );
// create another pushbutton...
TQPushButton copy2 = new TQPushButton( " -> ", this );
lay.addWidget( copy2 );
copy2.setMaximumWidth( copy2.sizeHint().width() );
// ...and connect its clicked() SIGNAL to the copy2to3() SLOT
connect( copy2, SIGNAL(" clicked()"), this, SLOT(" copy2to3()") );
tmp = new TQVBoxLayout( lay );
tmp.setMargin( 5 );
// and create a label which will be at the right of the window
label = new TQLabel( "No Item yet...", this );
tmp.addWidget( label );
}
/*
SLOT copy1to2()
*
Copies all checked ListViewItems from the first ListView to
the second one, and inserts them as Radio-ListViewItem.
*/
public void copy1to2()
{
// create an iterator which operates on the first ListView
Iterator it = lv1.itemList().iterator();
lv2.clear();
// Insert first a controller Item into the second ListView. Always if Radio-ListViewItems
// are inserted into a Listview, the parent item of these MUST be a controller Item!
TQCheckListItem item = new TQCheckListItem( lv2, "Controller", TQCheckListItem.Controller );
item.setOpen( true );
// iterate through the first ListView...
while ( it.hasNext() ) {
TQListViewItem current = (TQListViewItem) it.next();
// ...check state of childs, and...
if ( current.parent() != null )
// ...if the item is checked...
if ( ( (TQCheckListItem) current ).isOn() )
// ...insert a Radio-ListViewItem with the same text into the second ListView
new TQCheckListItem( item, current.text( 0 ), TQCheckListItem.RadioButton );
}
if ( item.firstChild() != null )
( ( TQCheckListItem )item.firstChild() ).setOn( true );
}
/*
SLOT copy2to3()
*
Copies the checked item of the second ListView into the
Label at the right.
*/
public void copy2to3()
{
// create an iterator which operates on the second ListView
Iterator it = lv2.itemList().iterator();
label.setText( "No Item checked" );
// iterate through the second ListView...
while ( it.hasNext() ) {
TQListViewItem current = (TQListViewItem) it.next();
// ...check state of childs, and...
if ( current.parent() != null )
// ...if the item is checked...
if ( ( (TQCheckListItem) current ).isOn() )
// ...set the text of the item to the label
label.setText( current.text( 0 ) );
}
}
}