/*
* Copyright 2003-2010 Tufts University Licensed under the
* Educational Community License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may
* obtain a copy of the License at
*
* http://www.osedu.org/licenses/ECL-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an "AS IS"
* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*******
** Filter Statement Editor
**
**
*********/
package tufts.vue;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
/**
* FilterStatementEditor
* This is the editor to create/modify logical filter statements.
*
**/
public class FilterStatementEditor extends JPanel {
////////////
// Statics
///////////
static private String [] sConditions = {"contains","equals","starts with","ends with" };
static private String [] sSources = { "All ", "Label","Notes","User Type","Resource","User Data" };
protected SourceItem mAnywhereSource = new SourceItem( sSources[0], 0, null);
private SourceItem mLabelSource = new SourceItem( sSources[1], 1, null);
private SourceItem mNotesSource = new SourceItem( sSources[2],2,null );
private SourceItem mUserTypeSource = new SourceItem( sSources[3], 3, null);
private SourceItem [] mDefaultSourceItems = { mAnywhereSource,
mLabelSource,
mNotesSource,
mUserTypeSource };
// end of array
///////////
// Fields
////////////
/** the horizontal layout fox **/
Box mBox = null;
/** the list of match conditions **/
JComboBox mCondition = null;
/** the value text edit field. **/
JTextField mValue = null;
/** the list of source types **/
JComboBox mSource = null;
/** the logical statement **/
LWCFilter.LogicalStatement mStatement = null;
// FIX: may want to add this restriction later...
/** The popup of map types **/
JComboBox mMapTypes = null;
/** the LWCFilter that this statement belongs to **/
LWCFilter mFilter = null;
//////////////
// Constuctors
///////////////
/**
* FilterStatementEditor
*
**/
public FilterStatementEditor( LWCFilter pFilter, LWCFilter.LogicalStatement pStatement) {
mBox = Box.createHorizontalBox();
mCondition = new JComboBox( sConditions );
mSource = new JComboBox();
mFilter = pFilter;
mValue = new JTextField();
setLayout( new BorderLayout() );
setBorder( new EmptyBorder(4,4,4,4) );
buildSourcesCombo( mFilter.getMap() );
mBox.add( mSource);
mBox.add( mCondition);
add( BorderLayout.WEST, mBox );
add( BorderLayout.CENTER, mValue );
setStatement( pStatement);
}
/**
* getStatement
* This returns the logical statement
* @return LogicalStatement the statement
**/
public LWCFilter.LogicalStatement getStatement() {
SourceItem item =(SourceItem) mSource.getSelectedItem();
mStatement.setSourceType( item.getType() );
mStatement.setSourceID( item.getSourceID() );
mStatement.setValue( mValue.getText() );
mStatement.setCondition( mCondition.getSelectedIndex() );
return mStatement;
}
public void setStatement( LWCFilter.LogicalStatement pStatement) {
mStatement = pStatement;
mValue.setText( mStatement.getValue() );
mCondition.setSelectedIndex( mStatement.getCondition() );
setSourceCombo( mStatement.getSourceType(), mStatement.getSourceID() );
}
public void refreshFields( LWMap pMap) {
// update the display
}
private void setSourceCombo( int pSource, String pID) {
if( pSource < mDefaultSourceItems.length ) {
mSource.setSelectedIndex( pSource);
}
else
if( pSource == LWCFilter.USERDATA ) {
// FIX: search user metadata to set
System.out.println("!!! FIX: need to search user meta-data.");
}
}
public void buildSourcesCombo( LWMap pMap) {
mSource.removeAllItems();
for(int i=0; i< mDefaultSourceItems.length; i++) {
mSource.addItem( mDefaultSourceItems[i] );
}
//UserMapType [] pMap.getUserMapTypes();
}
///////////
// Inner Classes
///////////////////
public class SourceItem {
String mName = null;
int mSourceType = 0;
String mSourceID = null;
public SourceItem( String pName, int pType, String pID) {
mName = pName;
mSourceType = pType;
mSourceID = pID;
}
public int getType() {
return mSourceType;
}
public String getSourceID() {
return mSourceID;
}
public String toString() {
return mName;
}
}
}