}
/**
- * When user selects level icons, set level values and filter messages.
+ * When user selects level icons, update level value and filter messages.
* @param level level type(Debug, Info, Error..)
- * @param setCheck is Checked or not
+ * @param beChecked is Checked or not
*/
- public void setLevel(int level, boolean setCheck)
+ public void changeLogLevelAndFilterMessages(int level, boolean beChecked)
{
- int levelMode = getSelectionLogTab().getLevelMode();
- level = (int) Math.pow(2, level);
+ updateLevelMode(level, beChecked);
+ getSelectionLogTab().filterMessages();
+ }
+ /**
+ * When default log level changed, update level values and filter messages.
+ * if info level is selected, levels under info priority(warning, error) should be checked
+ * and others should be unchecked
+ * @param index combo selection(0: verbose, 1: debug, ...)
+ * @param beChecked is Checked or not
+ */
+ private void checkLogLevelsAndFilterMessages(int index, boolean beChecked)
+ {
+ for(int i= 0; i < index ; i++)
+ {
+ updateLevelMode(i, !beChecked);
+ }
+ for(int i= index; i < LogLevel.values().length -1; i++)
+ {
+ updateLevelMode(i, beChecked);
+ }
+ getSelectionLogTab().filterMessages();
+ }
+
+ private void updateLevelMode(int level, boolean setCheck)
+ {
+ level = (int) Math.pow(2, level);
+ int levelMode = getSelectionLogTab().getLevelMode();
+
if (setCheck)
{
levelMode |= level;
{
levelMode &= (~level);
}
-
getSelectionLogTab().setLevelMode(levelMode);
- getSelectionLogTab().filterMessages();
}
// create the logtab with default devices
}
boolean check = getEnabled(state, ENABLE_LEVEL);
- for (Action level : levelActions)
+ boolean[] bEnable = {false, false, false, false, false};
+ if(check)
+ {
+// this.getSelectionLogTab().get
+ bEnable[2] = bEnable[3] =bEnable[4] = true;
+ }
+
+ for(int i = 0; i < levelActions.length; i++)
{
- level.setEnabled(check);
+ levelActions[i].setEnabled(bEnable[i]);
}
}
//Scroll lock action is toggle action
viewActions[3].setChecked(tab.getScrollLock());
}
-
+
/**
* Get enabled state for action depending on a logTab type.
*/
{
getSelectionLogTab().setScrollLock(lock);
}
-}
\ No newline at end of file
+
+ public void changeDefaultLevel(int index)
+ {
+ checkLogLevelsAndFilterMessages(index, true);
+
+ //The difference is 2 between default combo value and level priority
+ int value = index + 2;
+
+ for(LogLevel level : LogLevel.values())
+ {
+ if(level.getPriority() == value)
+ {
+ getSelectionLogTab().restart(level);
+ break;
+ }
+ }
+ }
+}
public static final int FILTER_MESSAGE = 2;
public static final int LEVEL_ALL = 0x1F;
+ public static final int LEVEL_DEFAULT = 0x1C;
+ private int levelMode = LEVEL_DEFAULT;
- private int levelMode = LEVEL_ALL;
+ private static LogLevel DEFAULT_LOGLEVEL = LogLevel.INFO;
//words to filter
private String[] pidFilters = null;
{
return table;
}
-
+
public void start()
{
+ start(DEFAULT_LOGLEVEL);
+ }
+ public void start(final LogLevel level)
+ {
if (device != null)
{
// create a new output receiver
try
{
- device.executeShellCommand("dlogutil -v long *:v", logReceiver, 0 /* timeout */); //$NON-NLS-1$
+ device.executeShellCommand("dlogutil -v long *:" + level.getPriorityLetter(), logReceiver, 0 /* timeout */); //$NON-NLS-1$
} catch (Exception e)
{
Logger.error("LogTab", e);
}
}
+ /**
+ * Stop current logger and start with new level
+ * It can be lost some log messages in time interval between stop and restart
+ * @param level start logger with level
+ */
+ public void restart(LogLevel level)
+ {
+ IDevice old = device;
+ stop(true);
+ setDevice(old);
+ start(level);
+ }
+
// add message to filtered message and replace old message to
// new message
public void addFilteredMessage(LogMessage newMessage, LogMessage oldMessage)
package org.tizen.common.connection.ui;
import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ControlContribution;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.Separator;
+import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.Clipboard;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.PlatformUI;
LogLevel[] levels = LogLevel.values();
logLevelActions = new Action[logLevelIcons.length];
+ boolean[] defaultState = {false, false, true, true, true, true};
for (int i = 0; i < logLevelActions.length; i++)
{
String name = levels[i].getStringValue();
{
a.setChecked(a.isChecked());
}
- logPanel.setLevel(i, a.isChecked());
+ logPanel.changeLogLevelAndFilterMessages(i, a.isChecked());
}
}
}
}
};
- logLevelActions[i].setChecked(true);
+ logLevelActions[i].setChecked(defaultState[i]);
logLevelActions[i].setToolTipText(name);
logLevelActions[i].setImageDescriptor(ConnectionPlugin.getImageDescriptorFromPlugin(logLevelIcons[i]));
}
// and then in the toolbar
IToolBarManager toolBarManager = actionBars.getToolBarManager();
+ LevelCombo levelCombo = new LevelCombo();
+ toolBarManager.add(levelCombo);
toolBarManager.add(new Separator());
for (Action a : logLevelActions)
{
toolBarManager.add(clearAction);
toolBarManager.add(new Separator());
}
+
+ public void setLevelActionEnable()
+ {
+
+ }
public LogPanel getPanel()
{
return logPanel;
}
+
+ private void setLogLevelActionState(Action level, boolean state)
+ {
+ level.setEnabled(state);
+ level.setChecked(state);
+ }
+
+ public class LevelCombo extends ControlContribution {
+
+ Combo combo;
+ public LevelCombo()
+ {
+ super(null);
+ }
+
+ @Override
+ protected Control createControl(Composite parent)
+ {
+ combo = new Combo(parent, SWT.NONE | SWT.DROP_DOWN | SWT.READ_ONLY);
+
+ LogLevel[] levels = LogLevel.values();
+ //0: verbose
+ //1: debug
+ //2: info
+ //3: warning
+ //4: error
+ //5: assert - not use
+ for(int i = 0; i < levels.length -1; i++)
+ {
+ combo.add( levels[i].getStringValue());
+ }
+
+ combo.setTextLimit(10);
+ //info is a default setting
+ combo.select(2);
+ combo.addSelectionListener(new SelectionListener()
+ {
+
+ public void widgetSelected(SelectionEvent e)
+ {
+ Combo combo = (Combo) e.widget;
+ int index = combo.getSelectionIndex();
+
+ for (int i = 0; i < logLevelActions.length; i++)
+ {
+ setLogLevelActionState(logLevelActions[i], i >= index);
+ }
+ getPanel().changeDefaultLevel(index);
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e)
+ {}
+ });
+
+ return combo;
+ }
+
+ public void setValue(int index)
+ {
+ combo.select(index);
+ }
+
+ }
}
\ No newline at end of file