Package com.baulsupp.less

Source Code of com.baulsupp.less.EventDialog

package com.baulsupp.less;

import java.util.ArrayList;

import jcurses.event.ActionEvent;
import jcurses.event.ActionListener;
import jcurses.system.InputChar;
import jcurses.widgets.BorderLayoutManager;
import jcurses.widgets.Button;
import jcurses.widgets.Dialog;
import jcurses.widgets.List;
import jcurses.widgets.WidgetsConstants;

import org.apache.log4j.Logger;

import com.baulsupp.curses.list.Util;
import com.baulsupp.kolja.log.viewer.event.Event;
import com.baulsupp.kolja.log.viewer.event.EventList;

public class EventDialog extends Dialog {
  private static final long serialVersionUID = -2438075837387252360L;

  @SuppressWarnings("unused")
  private static final Logger logger = Logger.getLogger(Less.class);

  private List list;
  private EventList eventList;
  private java.util.List<Event> items = new ArrayList<Event>();

  private Event result = null;

  public EventDialog(EventList eventList) {
    super(80, 40, false, "Event List");
   
    this.setShadow(false);
   
    this.eventList = eventList;

    BorderLayoutManager manager = new BorderLayoutManager();
    getRootPanel().setLayoutManager(manager);

    list = new List(35, false) {

      protected boolean handleInput(InputChar inputChar) {
        boolean result = super.handleInput(inputChar);

        if (Util.wasReturn(inputChar)) {
          if (!items.isEmpty()) {
            int trackedItem = getTrackedItem();

            if (trackedItem >= 0) {
              select(trackedItem);
            }
          }

          EventDialog.this.saveAndClose();
        }

        return result;
      }
    };

    loadEvents(false);

    manager.addWidget(list, BorderLayoutManager.CENTER, WidgetsConstants.ALIGNMENT_CENTER,
        WidgetsConstants.ALIGNMENT_CENTER);

      Button ok = new Button("Load Fully");
      ok.addListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
          loadEvents(true);
          EventDialog.this.repaint();
        }
      });

      manager.addWidget(ok, BorderLayoutManager.SOUTH, WidgetsConstants.ALIGNMENT_CENTER,
          WidgetsConstants.ALIGNMENT_CENTER);
     
      CompletionPanel completionPanel = new CompletionPanel(eventList);
      manager.addWidget(completionPanel, BorderLayoutManager.EAST, WidgetsConstants.ALIGNMENT_CENTER,
          WidgetsConstants.ALIGNMENT_CENTER);
     
  }

  private void loadEvents(boolean b) {
    list.clear();
    items.clear();

    if (b) {
      eventList.ensureAllKnown();
    }

    for (Event e : eventList.getEvents()) {
      list.add(e.toString());
      items.add(e);
    }
  }

  protected void onChar(InputChar arg0) {
    if (Util.wasReturn(arg0)) {
      saveAndClose();
    } else {
      super.onChar(arg0);
    }
  }

  public static Event getValue(EventList items) {
    EventDialog d = new EventDialog(items);

    d.show();

    return d.result;
  }

  private void saveAndClose() {
    int selection = list.getSelectedIndex();

    if (selection != -1) {
      result = items.get(selection);
    }
    close();
  }
}
TOP

Related Classes of com.baulsupp.less.EventDialog

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.