Package net.azib.ipscan.gui.actions

Source Code of net.azib.ipscan.gui.actions.ColumnsActions$AboutFetcher

/**
* This file is a part of Angry IP Scanner source code,
* see http://www.angryip.org/ for more information.
* Licensed under GPLv2.
*/
package net.azib.ipscan.gui.actions;

import net.azib.ipscan.config.GUIConfig;
import net.azib.ipscan.config.Labels;
import net.azib.ipscan.config.Platform;
import net.azib.ipscan.core.ScanningResultList;
import net.azib.ipscan.core.state.ScanningState;
import net.azib.ipscan.core.state.StateMachine;
import net.azib.ipscan.fetchers.Fetcher;
import net.azib.ipscan.fetchers.FetcherRegistry;
import net.azib.ipscan.gui.MainMenu.ColumnsMenu;
import net.azib.ipscan.gui.ResultTable;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;

/**
* ColumnsActions
*
* @author Anton Keks
*/
public class ColumnsActions {
 
  public static final class ColumnResize implements Listener {
    private GUIConfig guiConfig;
   
    public ColumnResize(GUIConfig guiConfig) {
      this.guiConfig = guiConfig;
    }

    public void handleEvent(Event event) {
      TableColumn column = (TableColumn) event.widget;
      // do not save the width of the last column on Linux, because in GTK
      // it is stretched to the width of the whole table and therefore is incorrect
      if (Platform.LINUX && column.getParent().getColumn(column.getParent().getColumnCount()-1) == column)
        return;

      // save column width
      guiConfig.setColumnWidth((Fetcher)column.getData(), column.getWidth());
    }
  }

  public static final class ColumnClick implements Listener {
   
    private final Menu columnsMenu;
    private final StateMachine stateMachine;
   
    public ColumnClick(ColumnsMenu columnsMenu, StateMachine stateMachine) {
      this.columnsMenu = columnsMenu;
      this.stateMachine = stateMachine;
    }

    public void handleEvent(Event e) {
      // modify menu text a bit
      TableColumn tableColumn = (TableColumn) e.widget;
      Fetcher fetcher = (Fetcher) tableColumn.getData();
     
      MenuItem sortMenuItem = columnsMenu.getItem(0);
      MenuItem preferencesMenuItem = columnsMenu.getItem(1);
      MenuItem aboutMenuItem = columnsMenu.getItem(2);

      if (tableColumn.getParent().getSortColumn() == tableColumn)
        sortMenuItem.setText(Labels.getLabel("menu.columns.sortDirection"));
      else
        sortMenuItem.setText(Labels.getLabel("menu.columns.sortBy") + " " + fetcher.getName());

      // disable these menu items if scanning
      sortMenuItem.setEnabled(stateMachine.inState(ScanningState.IDLE));

      preferencesMenuItem.setText(fetcher.getName() + " " + Labels.getLabel("menu.columns.preferences"));
      preferencesMenuItem.setEnabled(fetcher.getPreferencesClass() != null && stateMachine.inState(ScanningState.IDLE));

      aboutMenuItem.setText(Labels.getLabel("menu.columns.about") + " " + fetcher.getName());
     
      // focus the table to make Enter work after using the menu
      tableColumn.getParent().forceFocus();
     
      // remember the clicked column (see SortBy, FetcherPreferences, and AboutFetcher below)
      columnsMenu.setData(tableColumn);
     
      // show the menu
      columnsMenu.setLocation(e.display.getCursorLocation());
      columnsMenu.setVisible(true);
    }
  }

  public static final class SortBy implements Listener {
   
    private final ScanningResultList scanningResultList;
   
    public SortBy(ScanningResultList scanningResultList) {
      this.scanningResultList = scanningResultList;
    }

    public void handleEvent(Event event) {
      // retrieve the clicked column (see ColumnClick above)
      TableColumn tableColumn = (TableColumn) ((MenuItem)event.widget).getParent().getData();
     
      Table table = tableColumn.getParent();
     
      if (table.getSortColumn() != tableColumn) {
        table.setSortColumn(tableColumn);
        table.setSortDirection(SWT.UP);
      }
      else {
        table.setSortDirection(table.getSortDirection() == SWT.UP ? SWT.DOWN : SWT.UP);
      }

      scanningResultList.sort(table.indexOf(tableColumn), table.getSortDirection() == SWT.UP);
      ((ResultTable)table).updateResults();
    }
  }
 
  public static final class FetcherPreferences implements Listener {
   
    private final FetcherRegistry fetcherRegistry;
   
    public FetcherPreferences(FetcherRegistry fetcherRegistry) {
      this.fetcherRegistry = fetcherRegistry;
    }

    public void handleEvent(Event event) {
      // retrieve the clicked column (see ColumnClick above)
      TableColumn tableColumn = (TableColumn) ((MenuItem)event.widget).getParent().getData();
     
      Fetcher fetcher = (Fetcher) tableColumn.getData();
     
      fetcherRegistry.openPreferencesEditor(fetcher);
     
      // update name if preferences changed
      tableColumn.setText(fetcher.getFullName());
    }
  }
 
  public static final class AboutFetcher implements Listener {
   
    public void handleEvent(Event event) {
      // retrieve the clicked column (see ColumnClick above)
      TableColumn tableColumn = (TableColumn) ((MenuItem)event.widget).getParent().getData();
     
      Fetcher fetcher = (Fetcher) tableColumn.getData();

      MessageBox messageBox = new MessageBox(tableColumn.getParent().getShell(), SWT.ICON_INFORMATION | SWT.OK);
      messageBox.setText(Labels.getLabel("text.fetchers.info") + fetcher.getName());
      String info = fetcher.getInfo();
      if (info == null) {
        info = Labels.getLabel("text.fetchers.info.notAvailable");
      }
      messageBox.setMessage(info);
      messageBox.open();
    }
  }

}
TOP

Related Classes of net.azib.ipscan.gui.actions.ColumnsActions$AboutFetcher

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.