mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-74652 Time tracking features. Add, remove, hide closed actions in tool window.
This commit is contained in:
@@ -114,4 +114,8 @@ public abstract class TaskManager {
|
||||
public abstract boolean isTimeTrackingAutoMode();
|
||||
|
||||
public abstract void setTimeTrackingAutoMode(final boolean state);
|
||||
|
||||
public abstract boolean isHideClosedTasks();
|
||||
|
||||
public abstract void setHideClosedTasks(final boolean state);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.intellij.tasks.actions;
|
||||
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.actions.GotoActionBase;
|
||||
import com.intellij.ide.util.gotoByName.ChooseByNameBase;
|
||||
import com.intellij.ide.util.gotoByName.ChooseByNameItemProvider;
|
||||
@@ -19,6 +20,7 @@ import com.intellij.tasks.impl.TaskManagerImpl;
|
||||
import com.intellij.tasks.impl.TaskUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.IconUtil;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -35,6 +37,7 @@ public class GotoTaskAction extends GotoActionBase {
|
||||
|
||||
public GotoTaskAction() {
|
||||
getTemplatePresentation().setText("Open Task...");
|
||||
getTemplatePresentation().setIcon(IconUtil.getAddIcon());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -745,6 +745,16 @@ public class TaskManagerImpl extends TaskManager implements ProjectComponent, Pe
|
||||
getState().isTimeTrackingAutoMode = state;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHideClosedTasks() {
|
||||
return getState().hideClosedTasks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHideClosedTasks(final boolean state) {
|
||||
getState().hideClosedTasks = state;
|
||||
}
|
||||
|
||||
private static LocalTaskImpl createDefaultTask() {
|
||||
return new LocalTaskImpl(LocalTaskImpl.DEFAULT_TASK_ID, "Default task");
|
||||
}
|
||||
@@ -987,6 +997,7 @@ public class TaskManagerImpl extends TaskManager implements ProjectComponent, Pe
|
||||
public boolean enableTimeTracking = true;
|
||||
public int timeTrackingSuspendDelayInSeconds = 600;
|
||||
public boolean isTimeTrackingAutoMode = true;
|
||||
public boolean hideClosedTasks = true;
|
||||
}
|
||||
|
||||
private abstract class TestConnectionTask extends com.intellij.openapi.progress.Task.Modal {
|
||||
|
||||
+32
-5
@@ -11,12 +11,15 @@ import com.intellij.openapi.util.IconLoader;
|
||||
import com.intellij.tasks.LocalTask;
|
||||
import com.intellij.tasks.TaskListenerAdapter;
|
||||
import com.intellij.tasks.TaskManager;
|
||||
import com.intellij.tasks.actions.GotoTaskAction;
|
||||
import com.intellij.tasks.actions.SwitchTaskAction;
|
||||
import com.intellij.tasks.impl.TaskManagerImpl;
|
||||
import com.intellij.ui.LayeredIcon;
|
||||
import com.intellij.ui.ScrollPaneFactory;
|
||||
import com.intellij.ui.SimpleColoredComponent;
|
||||
import com.intellij.ui.SimpleTextAttributes;
|
||||
import com.intellij.ui.table.TableView;
|
||||
import com.intellij.util.IconUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.text.DateFormatUtil;
|
||||
import com.intellij.util.ui.ColumnInfo;
|
||||
@@ -40,17 +43,20 @@ public class TasksToolWindowPanel extends SimpleToolWindowPanel implements Dispo
|
||||
|
||||
private final ListTableModel<LocalTask> myTableModel;
|
||||
private final TaskManager myTaskManager;
|
||||
private final Project myProject;
|
||||
private Timer myTimer;
|
||||
private final TableView<LocalTask> myTable;
|
||||
|
||||
public TasksToolWindowPanel(final Project project, final boolean vertical) {
|
||||
super(vertical);
|
||||
myProject = project;
|
||||
myTaskManager = TaskManager.getManager(project);
|
||||
|
||||
final TableView<LocalTask> table = new TableView<LocalTask>(createListModel());
|
||||
myTableModel = table.getListTableModel();
|
||||
myTable = new TableView<LocalTask>(createListModel());
|
||||
myTableModel = myTable.getListTableModel();
|
||||
updateTable();
|
||||
|
||||
setContent(ScrollPaneFactory.createScrollPane(table, true));
|
||||
setContent(ScrollPaneFactory.createScrollPane(myTable, true));
|
||||
setToolbar(createToolbar());
|
||||
|
||||
myTaskManager.addTaskListener(new TaskListenerAdapter() {
|
||||
@@ -78,7 +84,7 @@ public class TasksToolWindowPanel extends SimpleToolWindowPanel implements Dispo
|
||||
myTimer = new Timer(TaskManagerImpl.TIME_TRACKING_TIME_UNIT, new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
table.repaint();
|
||||
myTable.repaint();
|
||||
}
|
||||
});
|
||||
myTimer.start();
|
||||
@@ -105,6 +111,26 @@ public class TasksToolWindowPanel extends SimpleToolWindowPanel implements Dispo
|
||||
|
||||
private JComponent createToolbar() {
|
||||
DefaultActionGroup group = new DefaultActionGroup();
|
||||
group.add(new GotoTaskAction());
|
||||
group.add(new AnAction("Remove Task", "Remove Task", IconUtil.getRemoveIcon()) {
|
||||
@Override
|
||||
public void actionPerformed(final AnActionEvent e) {
|
||||
for (LocalTask localTask : myTable.getSelectedObjects()) {
|
||||
SwitchTaskAction.removeTask(myProject, localTask, myTaskManager);
|
||||
}
|
||||
}
|
||||
});
|
||||
group.add(new ToggleAction("Hide closed tasks", "Hide closed tasks", AllIcons.Actions.Checked) {
|
||||
@Override
|
||||
public boolean isSelected(final AnActionEvent e) {
|
||||
return myTaskManager.isHideClosedTasks();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(final AnActionEvent e, final boolean state) {
|
||||
myTaskManager.setHideClosedTasks(state);
|
||||
}
|
||||
});
|
||||
group.add(new ToggleAction("Auto mode", "Automatic starting and stopping of timer", TasksIcons.AutoMode) {
|
||||
@Override
|
||||
public boolean isSelected(final AnActionEvent e) {
|
||||
@@ -114,6 +140,7 @@ public class TasksToolWindowPanel extends SimpleToolWindowPanel implements Dispo
|
||||
@Override
|
||||
public void setSelected(final AnActionEvent e, final boolean state) {
|
||||
myTaskManager.setTimeTrackingAutoMode(state);
|
||||
updateTable();
|
||||
}
|
||||
});
|
||||
group.add(new AnAction() {
|
||||
@@ -153,7 +180,7 @@ public class TasksToolWindowPanel extends SimpleToolWindowPanel implements Dispo
|
||||
}
|
||||
|
||||
private void updateTable() {
|
||||
myTableModel.setItems(ContainerUtil.filter(myTaskManager.getLocalTasks(), new Condition<LocalTask>() {
|
||||
myTableModel.setItems(ContainerUtil.filter(myTaskManager.getLocalTasks(myTaskManager.isHideClosedTasks()), new Condition<LocalTask>() {
|
||||
@Override
|
||||
public boolean value(final LocalTask task) {
|
||||
return task.isActive() || task.getTimeSpent() != 0;
|
||||
|
||||
Reference in New Issue
Block a user