Package omschaub.todo

Source Code of omschaub.todo.View

package omschaub.todo;



import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


import org.eclipse.swt.SWT;

import omschaub.todo.EpiMaker;

import org.eclipse.swt.custom.TableTree;
import org.eclipse.swt.custom.TableTreeEditor;
import org.eclipse.swt.custom.TableTreeItem;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
//import org.eclipse.swt.events.SelectionAdapter;
//import org.eclipse.swt.events.SelectionEvent;
//import org.eclipse.swt.events.TreeAdapter;
import org.eclipse.swt.events.TreeEvent;
import org.eclipse.swt.events.TreeListener;
//import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Rectangle;


import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;

import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Monitor;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
//import org.eclipse.swt.widgets.Widget;

import org.gudy.azureus2.plugins.PluginInterface;
import org.gudy.azureus2.plugins.PluginView;




public class View extends PluginView {
 
  //The current Display
  private Display display;
 
  //This view main GUI object
  private Composite composite;

  EpiMaker epiMaker;
  boolean tableCounter = false ;
  String name;
  String lines[] = new String[10];
  Table listEps; 
  TableTree listEpsTree;

  //The Plugin interface
    PluginInterface pluginInterface;
   // PluginManager pluginManager;
  public View(PluginInterface pluginInterface) {
    this.pluginInterface = pluginInterface;
  }
 
  /**
   * The Plugin name, as it'll be seen within the Plugins Menu in azureus
   */
  public String getPluginViewName() {
    return "ToDo";
  }
 
  /**
   * The plugin Title, used for its Tab name in the main window
   */
  public String getFullTitle() {   
    return "ToDo";
  }
 
  /**
   * Here stands any GUI initialisation
   */
  public void initialize(Composite parent) {
   
    // We store the Display variable as we'll need it for async GUI Changes
    this.display = parent.getDisplay();

    // We create our own composite, on which we'll add our components.
   
   
   
    this.composite = new Composite(parent,SWT.NULL);
   

   
    GridLayout layout = new GridLayout();
    //3 columns, as first row will have 3 elements.
    layout.numColumns = 3;
    composite.setLayout(layout);

    //Main Table for Episode List
    listEpsTree = new TableTree(composite, SWT.FULL_SELECTION | SWT.BORDER);
    //listEps = new Table(composite,SWT.FULL_SELECTION | SWT.BORDER);
    GridData gridData = new GridData(GridData.FILL_BOTH);
    gridData.horizontalSpan = 3;
    listEpsTree.setLayoutData( gridData );
   
    listEps = listEpsTree.getTable() ;
   
    listEps.setHeaderVisible(true);
    //listEps.setLinesVisible( true );
    TableColumn epiNameColumn = new TableColumn(listEps,SWT.NULL);
    epiNameColumn.setText("Plugin Name");
    epiNameColumn.setWidth(300);
    TableColumn epiNumberColumn = new TableColumn(listEps,SWT.NULL);
    epiNumberColumn.setText("ToDo");
    epiNumberColumn.setWidth( 300);
   
   
   
   
    gridData = new GridData(GridData.FILL_BOTH);
    gridData.horizontalSpan = 3;
    listEps.setLayoutData( gridData);
   
    //inline editor declaration

    final TableTreeEditor editor = new TableTreeEditor (listEpsTree);
   
    //Table Listener
    listEps.addMouseListener(new MouseAdapter() {
        public void mouseDoubleClick(MouseEvent event) {
           // Check is the table is not disposed
           if(listEps == null || listEps.isDisposed())
             return;
           //Get the selection
           TableItem[] items = listEps.getSelection();
          
           //If an item is selected (single click selects at least one)
           if(items.length == 1) {
            
             name = items[0].getText();
             //lines[2] = items[1].getText();

            
             epiMaker = new EpiMaker();
             lines = epiMaker.commentOpen(pluginInterface, name);
 
            
             inLineEdit(editor);
             //openForEdit(lines, false);
           }
        }
       
      });
   
    //Tree Listener
    
/*     listEpsTree.addSelectionListener (new SelectionAdapter() {
       public void widgetSelected(SelectionEvent e) {
         TableTreeItem[] selection = listEpsTree.getSelection();
         if (selection.length == 0) return;
         TableTreeItem item = selection[0];
         if (item.getExpanded())
         {
           item.setExpanded( false );
         } else
         {
           item.setExpanded( true );
         }
       }
      
      
     });*/
   
    listEpsTree.addTreeListener( new TreeListener(){

      public void treeCollapsed(TreeEvent arg0) {
        // TODO Auto-generated method stub
        System.out.println("Collapsed");
      }

      public void treeExpanded(TreeEvent arg0) {
        // TODO Auto-generated method stub
        System.out.println("Expanded");
      }
       
    });
   

   
//    popup menu
    Menu popupmenu = new Menu(composite  );
     
      MenuItem deleteItem = new MenuItem(popupmenu, SWT.PUSH);
      deleteItem.setText("Delete from List");
      deleteItem.addListener(SWT.Selection, new Listener() {
        public void handleEvent (Event e){
          try {
//             Check is the table is not disposed
              if(listEps == null || listEps.isDisposed())
                return;
              //Get the selection
              TableItem[] items = listEps.getSelection();
             
              //If an item is selected (single click selects at least one)
              if(items.length == 1) {
                //Grab selected item
                TableItem item = items[0];
                String nameToDie = item.getText(0);
                String episode = item.getText(1);
                item.dispose();
                deleteFromList(nameToDie, episode);
              }
               
               
               
        } catch (Exception e1) {
          e1.printStackTrace();
        }
        }
      });
   
      listEps.setMenu( popupmenu);
     
     
    //Refresh Button
    Button refresh = new Button(composite, SWT.PUSH);
    refresh.setText("Refresh List");
      refresh.addListener(SWT.Selection, new Listener() {
      public void handleEvent(Event e) {
        readEpifile() ;
      }
    });
 
      //Add New Button
      Button addNew = new Button(composite, SWT.PUSH);
      addNew.setText("Add New");
      addNew.addListener(SWT.Selection, new Listener() {
      public void handleEvent(Event e) {
        lines[1]= "";
        lines[2]= "";
        openForEdit(lines, true);
      }
    });
     
     
      //Label for info
      Label info = new Label(composite,SWT.BORDER);
      gridData = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
      info.setLayoutData( gridData );
      info.setText("  Double Click Item to Edit Item  /  Right Click to bring up Menu to Delete Item  ");
     
     
     
     
     
    
    readEpifile();
   
  }
 
 
  /**
   * This method will be called after initialization, in order to grab this
   * view composite.
   */
  public Composite getComposite() {
    return this.composite;
}
 
public void readEpifile(){
    try{
      sorter();
      listEps.removeAll();
      String inputLine1, inputLine2;
      String pluginDir =  pluginInterface.getPluginDirectoryName();
      String eplist_file = pluginDir + System.getProperty("file.separator") + "EpisodeList.txt";
      File episodeList = new File (eplist_file);
      if (!episodeList.isFile()){
        episodeList.createNewFile() ;
      }

      final BufferedReader in = new BufferedReader(new FileReader(episodeList));
      int lineCounter = 1;
      int temp1 = 0;
      int temp2 = 0;
      String[][] epiTemp = new String[1000][2];
      while((inputLine1 = in.readLine()) != null){
        if((inputLine2 = in.readLine()) != null)
        {
        epiTemp[temp1][0] = inputLine1;
        epiTemp[temp1][1] = inputLine2;
        ++temp1;
        //addTableElementDouble(listEpsTree,inputLine1, inputLine2);
        }
      }

      in.close();
     
         for(int i = 0; i < (temp1 ); i++)
         {
           addTableElementDouble(listEpsTree, epiTemp[i][0],epiTemp[i][1]);
         }
     
     
       
      }
      catch (Exception e){
         
      } 
   
  } 
 
 

private void addTableElementDouble(final TableTree tableToAdd,final String epiName, final String epiNumber) {
  tableCounter = false;
    if(display == null || display.isDisposed())
      return;

         //Some time has passed, and so the table might be disposed
         //We must check for it
         if(tableToAdd == null || tableToAdd.isDisposed())
            return;
        
         int tableTotal = tableToAdd.getItemCount();
        
         if (tableTotal%2==0) {
           //System.out.println(tableTotal);
           tableCounter=false;
         } else {
           //System.out.println("miss");
           tableCounter=true;
         }
        
         TableTreeItem[] items = tableToAdd.getItems();
         for (int g = 0; g< items.length ;g++){
         if(items[g].toString().endsWith( epiName)){
           //System.out.println("poof: match");
           return;
         }
         }
         TableTreeItem item = new TableTreeItem(tableToAdd,SWT.NULL);
         TableTreeItem subItemURL = new TableTreeItem(item, SWT.NULL);
         TableTreeItem subItemComments = new TableTreeItem(item, SWT.NULL);
       
         if (tableCounter == true){
            Color gray_color = new Color(display,240,240,240);
            item.setBackground( gray_color);
            //tableCounter = false;
            gray_color.dispose() ;
            }
           item.setText(0,epiName);
            item.setText(1,epiNumber);
            subItemURL.setText("URL: ");
            subItemComments.setText("Comments: ");
            tableCounter = false;
          

   
 

public String[] openForEdit(final String lines[], boolean editable){
 
  //Display displayforShell = new Display();
  final Shell shell = new Shell(display,SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
  //shell.setSize(900,300);
 
 
 
 
  Monitor primary = display.getPrimaryMonitor ();
  //Rectangle bounds = primary.getBounds ();
  Rectangle bounds = display.getBounds ();
  Rectangle rect = shell.getBounds ();
  int x = bounds.x + (bounds.width - rect.width) / 2;
  int y = bounds.y + (bounds.height - rect.height) / 2;
  shell.setLocation (x, y);
 
 
 
  GridLayout layout = new GridLayout();
  layout.numColumns = 3;
  shell.setLayout(layout);
 
 
 
  shell.setText("Edit Field");
 

 
  //Text Line 1
  Label seriesLabel = new Label(shell, SWT.NONE);
  GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
  gridData.horizontalSpan = 3;
  seriesLabel.setLayoutData( gridData );
  seriesLabel.setText("Plugin Name");
 
 
  final Text line1 = new Text(shell,SWT.BORDER);

  gridData = new GridData(GridData.FILL_HORIZONTAL);
  gridData.horizontalSpan = 3;
  line1.setLayoutData( gridData);
  line1.setEditable( editable );
  if (editable == false){

  shell.setText(lines[1]);
  line1.setVisible(false);
  }
  line1.setText(lines[1]);
 
 
 
  //Text Line 2
  Label episodeLabel = new Label(shell, SWT.NONE);
  gridData = new GridData(GridData.FILL_HORIZONTAL);
  gridData.horizontalSpan = 3;
  episodeLabel.setLayoutData( gridData );
  episodeLabel.setText("ToDo");
  final Text line2 = new Text(shell, SWT.BORDER);
  gridData = new GridData(GridData.FILL_HORIZONTAL);
  gridData.horizontalSpan = 3;
  line2.setLayoutData( gridData);
  line2.setEditable( true );
  line2.setText(lines[2]);
 
  //Button for Commit Changes
  Button commit = new Button(shell, SWT.PUSH);
  gridData = new GridData(GridData.FILL_HORIZONTAL);
  gridData.horizontalSpan = 1;
  commit.setLayoutData( gridData);
  commit.setText( "Commit Changes");
  commit.addListener(SWT.Selection, new Listener() {
    public void handleEvent(Event e) {
      lines[1]=line1.getText();
      lines[2]=line2.getText();
      if (lines[1] == null){
        shell.close();
        shell.dispose();
        return;
      }
      if (lines[2] == null){
        lines[2] = "Nothing Entered ";
      }
      epiMaker = new EpiMaker();
      epiMaker.commentWriter(pluginInterface, lines);
      shell.close() ;
      shell.dispose();
      readEpifile();
     
    }
  });
 
 
  //Button for Cancel
  Button cancel = new Button(shell, SWT.PUSH);
  gridData = new GridData(GridData.FILL_HORIZONTAL);
  gridData.horizontalSpan = 2;
  cancel.setLayoutData( gridData);
  cancel.setText("Cancel");
    cancel.addListener(SWT.Selection, new Listener() {
    public void handleEvent(Event e) {
      shell.close() ;
      shell.dispose()  ;
    }
  });
 
    shell.pack();
  shell.open();
 
  while (!shell.isDisposed ()) {
    if (!display.readAndDispatch ()) display.sleep ();
  }
  //display.dispose ();
 
 
  return lines;
}

public void inLineEdit(final TableTreeEditor editor){
    // Clean up any previous editor control
      Control oldEditor = editor.getEditor();
    if (oldEditor != null)
      oldEditor.dispose()
    // Identify the selected row
    TableTreeItem[] selection = listEpsTree.getSelection();
    if (selection.length == 0) return;
    final TableTreeItem item = selection[0];
    // The control that will be the editor must be a child of the Table
    // that underlies the TableTree
    final Text text = new Text(listEpsTree.getTable(), SWT.NONE);
    //text.moveAbove(tableTree);
    //The text editor must have the same size as the cell and must
    //not be any smaller than 50 pixels.
    editor.horizontalAlignment = SWT.LEFT;
    editor.grabHorizontal = true;
    //editor.minimumWidth = 50;
    // Open the text editor in the second column of the selected row.
    editor.setEditor (text, item, 1);
    // Assign focus to the text control
    text.setText( item.getText(1) );
    text.setFocus ();
   
    //Listener for editor
    text.addKeyListener(new KeyListener() {
      public void keyPressed(KeyEvent e) {
        int escPressed=0;
        switch (e.character){
          case SWT.CR: escPressed=1;break;
        }
        if (escPressed == 1){
          lines[1] = item.getText(0);
          lines[2] = text.getText();
          //System.out.println(lines[1] + " | " + lines[2]);
          epiMaker = new EpiMaker();
          epiMaker.commentWriter(pluginInterface, lines);
            Control oldEditor = editor.getEditor();
          if (oldEditor != null)
          {
            oldEditor.dispose();
          }
          if (!item.isDisposed())
          item.setText(1, lines[2])
         
       
        }
      }
      public void keyReleased (KeyEvent e) {

      }
    });
   

   
}

public void deleteFromList(String nameToDie, String episode){
  //System.out.println(nameToDie + episode);
 
  epiMaker = new EpiMaker();
  epiMaker.commentDelete( pluginInterface, nameToDie);
  readEpifile();
}



public void sorter(){
  String inputLine1, inputLine2;
  String epiNames[] = new String[1000];
  String epiEpisodes[] = new String[1000];
  int lineCounter = 0;
  try {
  String pluginDir =  pluginInterface.getPluginDirectoryName();
  String eplist_file = pluginDir + System.getProperty("file.separator") + "EpisodeList.txt";
 
  File episodeList = new File (eplist_file);
  if (!episodeList.isFile()){
   
      episodeList.createNewFile() ;
   
  }

  final BufferedReader in = new BufferedReader(new FileReader(episodeList));
 
  while((inputLine1 = in.readLine()) != null){
    if((inputLine2 = in.readLine()) != null){
      epiNames[lineCounter] = inputLine1;
      epiEpisodes[lineCounter] = inputLine2;
      lineCounter++;
  }
  }
 
  in.close();

  int epiLength = epiNames.length ;
    for ( int i = 0; i < (lineCounter); i++ ){
        for ( int j = 0; j < (lineCounter-1); j++ ){
        // This does the actual comparison
            if ( epiNames[j].compareToIgnoreCase( epiNames [j+1]) > 0 ){
                    // Swapping
                    String temp = epiNames[j];
                    epiNames[j] = epiNames[j+1];
                    epiNames[j+1] = temp;
                   
                    String temp2 = epiEpisodes[j];
                    epiEpisodes[j] = epiEpisodes[j+1];
                    epiEpisodes[j+1] = temp2;
        }
        }
    }
   
    File episodeList2 = new File (eplist_file);
    BufferedWriter bufWriter = new BufferedWriter(new FileWriter(episodeList2));
   
   for (int i=0; i <= lineCounter; i++){
      if (epiNames[i] == null){
        break;
      }
     bufWriter.write(epiNames[i] + "\n");
     bufWriter.write(epiEpisodes[i] + "\n");
    
   }   
 

  
   bufWriter.close();
   
   
   
  } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
}





public void delete() {
 
  super.delete();
    composite.dispose();
   

}

}
TOP

Related Classes of omschaub.todo.View

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.