/**
* WS-Attacker - A Modular Web Services Penetration Testing Framework Copyright
* (C) 2011 Christian Mainka
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 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 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., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package wsattacker.plugin.signatureWrapping.gui;
import org.jdesktop.beansbinding.Validator;
import wsattacker.gui.component.pluginconfiguration.composition.OptionGUI;
import wsattacker.library.signatureWrapping.option.Payload;
import wsattacker.main.composition.plugin.option.AbstractOption;
import wsattacker.plugin.signatureWrapping.option.OptionPayload;
public class OptionPayloadGUI_NB
extends OptionGUI
{
private OptionPayload option = new OptionPayload( new Payload() );
public static final String PROP_OPTION = "option";
/**
* Get the value of option
*
* @return the value of option
*/
public OptionPayload getOption()
{
return option;
}
/**
* Set the value of option
*
* @param option new value of option
*/
public void setOption( OptionPayload option )
{
OptionPayload oldOption = this.option;
this.option = option;
firePropertyChange( PROP_OPTION, oldOption, option );
}
/**
* Creates new form OptionVarcharGUI_NB
*/
public OptionPayloadGUI_NB()
{
initComponents();
}
public OptionPayloadGUI_NB( OptionPayload option )
{
this.option = option;
initComponents();
}
private void setValueBackgroundIfError( boolean error )
{
if ( error )
{
value.setBackground( COLOR_ERROR );
}
else
{
value.setBackground( COLOR_OK );
}
}
/**
* This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The
* content of this method is always regenerated by the Form Editor.
*/
@SuppressWarnings( "unchecked" )
// <editor-fold defaultstate="collapsed"
// desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents()
{
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
name = new javax.swing.JLabel();
description = new javax.swing.JLabel();
lengthLabel = new javax.swing.JLabel();
maxValue = new javax.swing.JLabel();
valueScrollPane = new javax.swing.JScrollPane();
value = new wsattacker.gui.util.XmlTextPane();
typeLabel = new javax.swing.JLabel();
typeValue = new javax.swing.JLabel();
timestampCheckBox = new javax.swing.JCheckBox();
xpathLabel = new javax.swing.JLabel();
xpathValue = new javax.swing.JTextField();
name.setFont( new java.awt.Font( "Dialog", 1, 18 ) ); // NOI18N
org.jdesktop.beansbinding.Binding binding =
org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ,
this,
org.jdesktop.beansbinding.ELProperty.create( "${option.name}" ),
name,
org.jdesktop.beansbinding.BeanProperty.create( "text" ) );
binding.setSourceNullValue( "Option Name" );
binding.setSourceUnreadableValue( "Option Name" );
bindingGroup.addBinding( binding );
description.setFont( new java.awt.Font( "Dialog", 0, 12 ) ); // NOI18N
binding =
org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ,
this,
org.jdesktop.beansbinding.ELProperty.create( "${option.description}" ),
description,
org.jdesktop.beansbinding.BeanProperty.create( "text" ) );
binding.setSourceNullValue( "Option Description" );
binding.setSourceUnreadableValue( "Option Description" );
bindingGroup.addBinding( binding );
lengthLabel.setFont( new java.awt.Font( "Dialog", 0, 12 ) ); // NOI18N
lengthLabel.setText( "Length:" );
binding =
org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
value,
org.jdesktop.beansbinding.ELProperty.create( "${text}" ),
maxValue,
org.jdesktop.beansbinding.BeanProperty.create( "text" ),
option.getName() );
binding.setConverter( new org.jdesktop.beansbinding.Converter<String, String>()
{
@Override
public String convertForward( String value )
{
return String.format( "%d", value.length() );
}
@Override
public String convertReverse( String value )
{
return "### Read Only ###";
}
} );
bindingGroup.addBinding( binding );
binding =
org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
org.jdesktop.beansbinding.ELProperty.create( "${option.value}" ),
value,
org.jdesktop.beansbinding.BeanProperty.create( "text" ) );
binding.setSourceNullValue( "Null Source" );
binding.setSourceUnreadableValue( "Unreadable Source" );
binding.setValidator( new Validator<String>()
{
@Override
public Validator<String>.Result validate( String value )
{
Validator<String>.Result result = null;
if ( !getOption().isValid( value ) )
{
result = new Validator.Result( 1, "Value invalid" );
setValueBackgroundIfError( true );
}
else
{
setValueBackgroundIfError( false );
}
return result;
}
} );
bindingGroup.addBinding( binding );
valueScrollPane.setViewportView( value );
typeLabel.setFont( new java.awt.Font( "Dialog", 0, 12 ) ); // NOI18N
typeLabel.setText( "Type:" );
typeValue.setText( "XML" );
timestampCheckBox.setText( "is Timestamp?" );
binding =
org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
org.jdesktop.beansbinding.ELProperty.create( "${option.timestamp}" ),
timestampCheckBox,
org.jdesktop.beansbinding.BeanProperty.create( "selected" ) );
bindingGroup.addBinding( binding );
xpathLabel.setText( "Used XPath for analysis:" );
binding =
org.jdesktop.beansbinding.Bindings.createAutoBinding( org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
this,
org.jdesktop.beansbinding.ELProperty.create( "${option.workingXPath}" ),
xpathValue,
org.jdesktop.beansbinding.BeanProperty.create( "text" ) );
binding.setSourceNullValue( "Null Source" );
binding.setSourceUnreadableValue( "Unreadable Source" );
bindingGroup.addBinding( binding );
javax.swing.GroupLayout layout = new javax.swing.GroupLayout( this );
this.setLayout( layout );
layout.setHorizontalGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addGroup( layout.createSequentialGroup().addContainerGap().addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addComponent( valueScrollPane ).addComponent( xpathValue ).addComponent( name ).addComponent( description ).addComponent( xpathLabel ).addGroup( layout.createSequentialGroup().addComponent( typeLabel ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( typeValue ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( lengthLabel ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( maxValue ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( timestampCheckBox ) ) ).addContainerGap() ) );
layout.setVerticalGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING ).addGroup( layout.createSequentialGroup().addContainerGap().addComponent( name ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( valueScrollPane,
javax.swing.GroupLayout.PREFERRED_SIZE,
141,
javax.swing.GroupLayout.PREFERRED_SIZE ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addGroup( layout.createParallelGroup( javax.swing.GroupLayout.Alignment.BASELINE ).addComponent( lengthLabel ).addComponent( maxValue ).addComponent( typeLabel ).addComponent( typeValue ).addComponent( timestampCheckBox ) ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( description ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( xpathLabel ).addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent( xpathValue,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE ).addContainerGap( javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE ) ) );
bindingGroup.bind();
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel description;
private javax.swing.JLabel lengthLabel;
private javax.swing.JLabel maxValue;
private javax.swing.JLabel name;
private javax.swing.JCheckBox timestampCheckBox;
private javax.swing.JLabel typeLabel;
private javax.swing.JLabel typeValue;
private wsattacker.gui.util.XmlTextPane value;
private javax.swing.JScrollPane valueScrollPane;
private javax.swing.JLabel xpathLabel;
private javax.swing.JTextField xpathValue;
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
// End of variables declaration//GEN-END:variables
@Override
public void bindingDoUnbind()
{
bindingGroup.unbind();
}
@Override
public AbstractOption getUsedOption()
{
return option;
}
}