зеркало из https://github.com/mozilla/gecko-dev.git
211 строки
7.4 KiB
Java
211 строки
7.4 KiB
Java
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public
|
|
* License Version 1.1 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS
|
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
* implied. See the License for the specific language governing
|
|
* rights and limitations under the License.
|
|
*
|
|
* The Original Code is mozilla.org code.
|
|
*
|
|
* The Initial Developer of the Original Code is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All
|
|
* Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
*/
|
|
|
|
package com.netscape.jsdebugging.jslogger;
|
|
|
|
import netscape.application.*;
|
|
import netscape.util.*;
|
|
|
|
/**
|
|
* Main entry point and workhorse for JavaScript Logger
|
|
*
|
|
* @author John Bandhauer
|
|
*/
|
|
|
|
public class ControlPanel
|
|
extends View
|
|
implements Target, TextFilter
|
|
{
|
|
public static ControlPanel create(JSLogger logger)
|
|
{
|
|
if( ! logger.isApplet() )
|
|
{
|
|
ExternalWindow _mainWindow = new ExternalWindow();
|
|
_mainWindow.setBounds(0, 0, 500, 300);
|
|
_mainWindow.setTitle("JSLogger");
|
|
_mainWindow.setResizable(false);
|
|
logger.setMainRootView(_mainWindow.rootView());
|
|
_mainWindow.show();
|
|
}
|
|
logger.mainRootView().setColor(Color.lightGray);
|
|
// logger.mainRootView().setColor(Color.white);
|
|
return new ControlPanel(logger, logger.mainRootView().localBounds());
|
|
}
|
|
private static final int DX = 500;
|
|
|
|
private static final int CHECK_DX = 160;
|
|
private static final int CHECK_1_X = 2;
|
|
private static final int CHECK_2_X = CHECK_1_X+CHECK_DX+2;
|
|
private static final int CHECK_INITAL_Y = 2;
|
|
private static final int CHECK_DY = 24;
|
|
private static final int CHECK_SPACER_DY = 0;
|
|
private static final int CHECK_SUBCOL_DX = 10;
|
|
|
|
private static final int LABEL_X = CHECK_1_X;
|
|
private static final int LABEL_DX = 160;
|
|
private static final int EDIT_X = LABEL_X + LABEL_DX + 2;
|
|
private static final int EDIT_DX = DX - (LABEL_DX+2+2);
|
|
private static final int LABEL_EDIT_DY = 24;
|
|
private static final int LABEL_EDIT_SP_DY = 0;
|
|
|
|
private int[] check_y = {CHECK_INITAL_Y, CHECK_INITAL_Y};
|
|
private int[] check_x = {CHECK_1_X, CHECK_2_X};
|
|
|
|
private int label_edit_y;
|
|
|
|
private ControlPanel(JSLogger logger, Rect rect)
|
|
{
|
|
super(rect);
|
|
_logger = logger;
|
|
_logger.mainRootView().addSubview(this);
|
|
|
|
_checkbox(0,0,"Logging On", JSLogger.LOGGING_ON);
|
|
_checkbox(0,1,"Log Date", JSLogger.LOG_DATE);
|
|
_checkbox(0,1,"Log Thread Name", JSLogger.LOG_THREADNAME);
|
|
_checkbox(0,1,"Log to File", JSLogger.LOG_TO_FILE);
|
|
_checkbox(0,1,"Log to Console", JSLogger.LOG_TO_CONSOLE);
|
|
_checkbox(1,0,"Log Execution", JSLogger.TRACE_EXECUTION);
|
|
_checkbox(1,1,"Log Function Calls", JSLogger.TRACE_FUNCTION_CALLS);
|
|
_checkbox(1,2,"Log Stack Trace", JSLogger.TRACE_DUMP_CALLSTACKS);
|
|
_checkbox(1,1,"Log Each Line", JSLogger.TRACE_EACH_LINE);
|
|
_checkbox(1,0,"Log Script Loading", JSLogger.TRACE_SCRIPT_LOADING);
|
|
|
|
label_edit_y = Math.max(check_y[0],check_y[1]) + 2;
|
|
|
|
_edit("Eval Expression", JSLogger.EVAL_EXPRESSION);
|
|
_edit("Only Scripts From", JSLogger.LOG_ONLY_SCRIPTS_FROM);
|
|
_edit("Ignore Scripts From", JSLogger.IGNORE_SCRIPTS_FROM);
|
|
_edit("Only Functions Named", JSLogger.LOG_ONLY_IN_FUNCTION);
|
|
_edit("Ignore Functions Named", JSLogger.IGNORE_IN_FUNCTION);
|
|
_edit("Ignore Script Loading From", JSLogger.IGNORE_SCRIPT_LOADING_FROM);
|
|
}
|
|
|
|
private void _checkbox(int col, int subCol, String title, int cmdID)
|
|
{
|
|
Button button =
|
|
Button.createCheckButton(check_x[col] + CHECK_SUBCOL_DX * subCol,
|
|
check_y[col],
|
|
CHECK_DX - CHECK_SUBCOL_DX * subCol,
|
|
CHECK_DY);
|
|
button.setTitle(title);
|
|
button.setTarget(this);
|
|
button.setCommand(_makeBoolCmd(cmdID));
|
|
button.setState(_logger.getBoolOption(cmdID));
|
|
addSubview(button);
|
|
|
|
check_y[col] += CHECK_DY + CHECK_SPACER_DY;
|
|
}
|
|
|
|
private void _edit(String title, int cmdID)
|
|
{
|
|
TextField label = new TextField(LABEL_X, label_edit_y,
|
|
LABEL_DX, LABEL_EDIT_DY );
|
|
label.setStringValue(title);
|
|
label.setEditable(false);
|
|
label.setSelectable(false);
|
|
label.setJustification(Graphics.RIGHT_JUSTIFIED);
|
|
label.setBackgroundColor(Color.lightGray);
|
|
label.setBorder(null);
|
|
addSubview(label);
|
|
|
|
TextField edit = new TextField(EDIT_X, label_edit_y,
|
|
EDIT_DX, LABEL_EDIT_DY );
|
|
edit.setCommand(_makeStringCmd(cmdID));
|
|
edit.setStringValue(_logger.getStringOption(cmdID));
|
|
edit.setFilter(this); // to catch return key
|
|
addSubview(edit);
|
|
|
|
label_edit_y += LABEL_EDIT_DY + LABEL_EDIT_SP_DY;
|
|
}
|
|
|
|
// implement TextFilter interface
|
|
public boolean acceptsEvent(Object o, KeyEvent ke , Vector vec)
|
|
{
|
|
if( ke.isReturnKey() )
|
|
{
|
|
try
|
|
{
|
|
TextField t = (TextField)o;
|
|
Application.application().performCommandLater(this, t.command(), t);
|
|
return false;
|
|
}
|
|
catch(Throwable t)
|
|
{
|
|
System.out.println(t);
|
|
// eat it
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private String _tfs(Object data)
|
|
{
|
|
TextField t = (TextField)data;
|
|
String s = t.stringValue();
|
|
if( null == s || 0 == s.trim().length() )
|
|
return null;
|
|
return s;
|
|
}
|
|
|
|
public void performCommand(String cmd, Object data)
|
|
{
|
|
if( _isBoolCmd(cmd) )
|
|
_logger.setBoolOption(_getBoolCmdNumber(cmd),((Button)data).state());
|
|
if( _isStringCmd(cmd) )
|
|
_logger.setStringOption(_getStringCmdNumber(cmd),_tfs(data));
|
|
}
|
|
|
|
private String _makeBoolCmd(int num) {return BOOL_CMD_PREFIX+num;}
|
|
private String _makeStringCmd(int num) {return STRING_CMD_PREFIX+num;}
|
|
private boolean _isBoolCmd(String cmd) {return cmd.startsWith(BOOL_CMD_PREFIX);}
|
|
private boolean _isStringCmd(String cmd){return cmd.startsWith(STRING_CMD_PREFIX);}
|
|
private int _getBoolCmdNumber(String cmd)
|
|
{
|
|
try
|
|
{
|
|
return Integer.parseInt(cmd.substring(BOOL_CMD_PREFIX.length()));
|
|
}
|
|
catch(Exception e)
|
|
{
|
|
// eat it...
|
|
}
|
|
return 0;
|
|
}
|
|
private int _getStringCmdNumber(String cmd)
|
|
{
|
|
try
|
|
{
|
|
return Integer.parseInt(cmd.substring(STRING_CMD_PREFIX.length()));
|
|
}
|
|
catch(Exception e)
|
|
{
|
|
// eat it...
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
private static final String BOOL_CMD_PREFIX = "BOOL_";
|
|
private static final String STRING_CMD_PREFIX = "STRING_";
|
|
|
|
private JSLogger _logger;
|
|
}
|