Package org.gudy.azureus2.ui.swt

Source Code of org.gudy.azureus2.ui.swt.PropertiesWindow

/*
* Created on 02-Oct-2005
* Created by Paul Gardner
* Copyright (C) 2005, 2006 Aelitis, All Rights Reserved.
*
* 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*
* AELITIS, SAS au capital de 46,603.30 euros
* 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France.
*
*/

package org.gudy.azureus2.ui.swt;

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.ControlAdapter;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;

import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.ui.swt.components.BufferedLabel;
import org.gudy.azureus2.ui.swt.components.shell.ShellFactory;


public class
PropertiesWindow
{
  private final Shell    shell;
 
  public
  PropertiesWindow(
    String    object_name,
    String[]  keys,
    String[]  values )
  { 
    shell = ShellFactory.createMainShell(SWT.APPLICATION_MODAL | SWT.TITLE | SWT.CLOSE |SWT.RESIZE );

    shell.setText( MessageText.getString( "props.window.title", new String[]{ object_name }));
   
    Utils.setShellIcon(shell);
   
      GridLayout layout = new GridLayout();
      layout.numColumns = 3;
      shell.setLayout(layout);

      final ScrolledComposite scrollable = new ScrolledComposite(shell, SWT.V_SCROLL | SWT.H_SCROLL );
      GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
      gridData.horizontalSpan = 3;
     
    scrollable.setLayoutData( gridData );

    /*
     * Main content composite where panels will be created
     */
    final Composite main = new Composite(scrollable, SWT.NONE);

    layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    //layout.verticalSpacing = 0;
    layout.numColumns = 2;
    main.setLayout(layout);
   
    scrollable.setContent(main);
    scrollable.setExpandVertical(true);
    scrollable.setExpandHorizontal(true);

    /*
     * Re-adjust scrollbar setting when the window resizes
     */
    scrollable.addControlListener(new ControlAdapter() {
      public void controlResized(ControlEvent e) {
        Rectangle r = scrollable.getClientArea();
        scrollable.setMinSize(main.computeSize(r.width, SWT.DEFAULT ));
      }
    });
     
      gridData = new GridData(GridData.FILL_BOTH);
      gridData.horizontalSpan = 3;
      main.setLayoutData(gridData);

      for (int i=0;i<keys.length;i++){
       
        if ( keys[i] == null || values[i] == null ){
         
          continue;
        }
       
        BufferedLabel  msg_label = new BufferedLabel(main, SWT.NULL);
        String msg;
        String key = keys[i];
        if ( key.startsWith( "!" ) && key.endsWith( "!" )){
          msg = key.substring(1, key.length()-1 );
        }else{
          msg = MessageText.getString( key );
        }
       
        String value = values[i];
       
          // hack to allow key values on their own
       
        if ( value.equals( "<null>" )){
         
          msg_label.setText( msg );
         
          value = "";
        }else{
         
          msg_label.setText( msg + ":" );
        }
       
        gridData = new GridData();
        gridData.verticalAlignment = GridData.VERTICAL_ALIGN_FILL;
        msg_label.setLayoutData(gridData);
 
        BufferedLabel  val_label = new BufferedLabel(main,SWT.WRAP);
        val_label.setText( value );
        gridData = new GridData(GridData.FILL_HORIZONTAL);
        gridData.horizontalIndent = 6;
        val_label.setLayoutData(gridData);
      }

      // separator
     
    Label labelSeparator = new Label(shell,SWT.SEPARATOR | SWT.HORIZONTAL);
    gridData = new GridData(GridData.FILL_HORIZONTAL);
    gridData.horizontalSpan = 3;
    labelSeparator.setLayoutData(gridData);
   
      // buttons
     
    new Label(shell,SWT.NULL);

    Button bOk = new Button(shell,SWT.PUSH);
     Messages.setLanguageText(bOk, "Button.ok");
     gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.HORIZONTAL_ALIGN_END | GridData.HORIZONTAL_ALIGN_FILL);
     gridData.grabExcessHorizontalSpace = true;
     gridData.widthHint = 70;
     bOk.setLayoutData(gridData);
     bOk.addListener(SWT.Selection,new Listener() {
        public void handleEvent(Event e) {
         close();
         }
     });
   
     Button bCancel = new Button(shell,SWT.PUSH);
     Messages.setLanguageText(bCancel, "Button.cancel");
     gridData = new GridData(GridData.HORIZONTAL_ALIGN_END);
     gridData.grabExcessHorizontalSpace = false;
     gridData.widthHint = 70;
     bCancel.setLayoutData(gridData);   
     bCancel.addListener(SWT.Selection,new Listener() {
       public void handleEvent(Event e) {
         close();
         }
     });
   
     shell.setDefaultButton( bOk );
   
     shell.addListener(SWT.Traverse, new Listener() { 
      public void handleEvent(Event e) {
        if ( e.character == SWT.ESC){
          close();
        }
      }
    });
 
     if (!Utils.linkShellMetricsToConfig(shell, "PropWin")) {
       int  shell_width = 400;
      
       int  main_height = main.computeSize(shell_width, SWT.DEFAULT).y;
      
       main_height = Math.max( main_height, 250 );
      
       main_height = Math.min( main_height, 500 );
 
       int shell_height = main_height + 50;
        
       shell.setSize( shell_width, shell_height );
     }

    Utils.centreWindow( shell );

    shell.open();  
  }     

  protected void
  close()
  {
    if ( !shell.isDisposed()){
     
      shell.dispose();
    }
  }
}
TOP

Related Classes of org.gudy.azureus2.ui.swt.PropertiesWindow

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.