diff --git a/.idea/modules.xml b/.idea/modules.xml
index 2cbe182476da..bacca10b849f 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -131,7 +131,6 @@
-
diff --git a/plugins/tasks/tasks-time-tracking/src/META-INF/plugin.xml b/plugins/tasks/tasks-time-tracking/src/META-INF/plugin.xml
deleted file mode 100644
index d0b4664d1072..000000000000
--- a/plugins/tasks/tasks-time-tracking/src/META-INF/plugin.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
- com.intellij.tasks.timeTracking
- Time Tracking
- Enables time tracking for "Task Management" plugin
- JetBrains
- 1.0
-
- com.intellij.tasks
-
-
-
- com.intellij.tasks.timeTracking.TimeTrackingManager
-
-
-
-
-
-
-
-
-
diff --git a/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/SendTimeTrackingInformationDialog.form b/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/SendTimeTrackingInformationDialog.form
deleted file mode 100644
index 2470a2f7ef4f..000000000000
--- a/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/SendTimeTrackingInformationDialog.form
+++ /dev/null
@@ -1,130 +0,0 @@
-
-
diff --git a/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/SendTimeTrackingInformationDialog.java b/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/SendTimeTrackingInformationDialog.java
deleted file mode 100644
index c0f2cc0a8965..000000000000
--- a/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/SendTimeTrackingInformationDialog.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright 2000-2012 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.intellij.tasks.timeTracking;
-
-import com.intellij.openapi.diagnostic.Logger;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.ui.DialogWrapper;
-import com.intellij.openapi.ui.Messages;
-import com.intellij.openapi.ui.ValidationInfo;
-import com.intellij.tasks.LocalTask;
-import com.intellij.tasks.TaskRepository;
-import org.jetbrains.annotations.Nullable;
-
-import javax.swing.*;
-import java.util.Date;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * User: evgeny.zakrevsky
- * Date: 12/26/12
- */
-public class SendTimeTrackingInformationDialog extends DialogWrapper {
- private final static Logger LOG = Logger.getInstance("#com.intellij.tasks.timeTracking.TasksToolWindowPanel");
- public static final Pattern PATTERN = Pattern.compile("([0-9]+)d ([0-9]+)h ([0-9]+)m");
-
- @Nullable private final Project myProject;
- private final LocalTask myTask;
- private JRadioButton myFromPreviousPostRadioButton;
- private JRadioButton myTotallyRadioButton;
- private JRadioButton myCustomRadioButton;
- private JTextField myFromPreviousPostTextField;
- private JTextField myTotallyTextField;
- private JTextField myCustomTextField;
- private JTextArea myCommentTextArea;
- private JPanel myPanel;
- private JLabel myTaskNameLabel;
-
- protected SendTimeTrackingInformationDialog(@Nullable final Project project, final LocalTask localTask) {
- super(project);
- myProject = project;
- myTask = localTask;
- setTitle("Time Tracking");
-
- myTaskNameLabel.setText(myTask.getPresentableName());
- myFromPreviousPostRadioButton.setSelected(true);
- if (myTask.getLastPost() == null) {
- myFromPreviousPostRadioButton.setVisible(false);
- myFromPreviousPostTextField.setVisible(false);
- myTotallyRadioButton.setSelected(true);
- }
- myFromPreviousPostTextField.setText(formatDuration(myTask.getTimeSpentFromLastPost()));
- myTotallyTextField.setText(formatDuration(myTask.getTotalTimeSpent()));
-
- init();
- }
-
- @Nullable
- @Override
- protected JComponent createCenterPanel() {
- return myPanel;
- }
-
- private static String formatDuration(final long milliseconds) {
- final int second = 1000;
- final int minute = 60 * second;
- final int hour = 60 * minute;
- final int day = 24 * hour;
-
- final int days = (int)(milliseconds / day);
- final int hours = (int)(milliseconds % day / hour);
- final int minutes = (int)(milliseconds % hour / minute);
-
- String daysString = days + "d ";
- String hoursString = hours + "h ";
- String minutesString = minutes + "m";
-
- return daysString + hoursString + minutesString;
- }
-
- @Override
- protected void doOKAction() {
- String timeSpentText = myFromPreviousPostRadioButton.isSelected() ? myFromPreviousPostTextField.getText()
- : myTotallyRadioButton.isSelected() ? myTotallyTextField.getText() : myCustomTextField.getText();
- final Matcher matcher = PATTERN.matcher(timeSpentText);
- if (matcher.matches()) {
- final int timeSpent = Integer.valueOf(matcher.group(1)) * 24 * 60 + Integer.valueOf(matcher.group(2)) * 60 + Integer.valueOf(
- matcher.group(3));
-
- final TaskRepository repository = myTask.getRepository();
- if (repository != null &&
- repository.isSupported(TaskRepository.TIME_MANAGEMENT)) {
- try {
- repository.updateTimeSpent(myTask, timeSpentText, myCommentTextArea.getText());
- myTask.setLastPost(new Date());
- }
- catch (Exception e1) {
- Messages
- .showErrorDialog(myProject, "Could not send information for " + myTask.getPresentableName() + "
" + e1.getMessage(),
- "Error");
- LOG.warn(e1);
- }
- }
- }
-
-
- super.doOKAction();
- }
-
- @Nullable
- @Override
- protected ValidationInfo doValidate() {
- String timeSpentText = myFromPreviousPostRadioButton.isSelected() ? myFromPreviousPostTextField.getText()
- : myTotallyRadioButton.isSelected() ? myTotallyTextField.getText() : myCustomTextField.getText();
- if (!PATTERN.matcher(timeSpentText).matches()) return new ValidationInfo("Time Spent has broken format");
- return null;
- }
-
- @Nullable
- @Override
- protected String getDimensionServiceKey() {
- return "com.intellij.tasks.timeTracking.TasksToolWindowPanel";
- }
-}
diff --git a/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/TasksToolWindowFactory.java b/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/TasksToolWindowFactory.java
deleted file mode 100644
index fd1593fc94b2..000000000000
--- a/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/TasksToolWindowFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.intellij.tasks.timeTracking;
-
-import com.intellij.openapi.project.DumbAware;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.Condition;
-import com.intellij.openapi.wm.ToolWindow;
-import com.intellij.openapi.wm.ToolWindowAnchor;
-import com.intellij.openapi.wm.ToolWindowFactory;
-import com.intellij.ui.content.Content;
-import com.intellij.ui.content.ContentFactory;
-import com.intellij.ui.content.ContentManager;
-
-/**
- * User: evgeny.zakrevsky
- * Date: 11/8/12
- */
-public class TasksToolWindowFactory implements ToolWindowFactory, Condition, DumbAware {
-
- @Override
- public boolean value(final Project project) {
- return TimeTrackingManager.getInstance(project).isTimeTrackingToolWindowAvailable();
- }
-
- @Override
- public void createToolWindowContent(final Project project, final ToolWindow toolWindow) {
- final ContentManager contentManager = toolWindow.getContentManager();
- final Content content = ContentFactory.SERVICE.getInstance().
- createContent(new TasksToolWindowPanel(project, toolWindow.getAnchor() == ToolWindowAnchor.LEFT ||
- toolWindow.getAnchor() == ToolWindowAnchor.RIGHT), null, false);
- contentManager.addContent(content);
- }
-}
diff --git a/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/TasksToolWindowPanel.java b/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/TasksToolWindowPanel.java
deleted file mode 100644
index 9e28eec7fe34..000000000000
--- a/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/TasksToolWindowPanel.java
+++ /dev/null
@@ -1,363 +0,0 @@
-package com.intellij.tasks.timeTracking;
-
-import com.intellij.icons.AllIcons;
-import com.intellij.openapi.Disposable;
-import com.intellij.openapi.actionSystem.*;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.ui.SimpleToolWindowPanel;
-import com.intellij.openapi.util.Comparing;
-import com.intellij.openapi.util.Condition;
-import com.intellij.openapi.util.IconLoader;
-import com.intellij.tasks.*;
-import com.intellij.tasks.actions.GotoTaskAction;
-import com.intellij.tasks.actions.SwitchTaskAction;
-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;
-import com.intellij.util.ui.ListTableModel;
-import com.intellij.util.ui.UIUtil;
-import icons.TasksIcons;
-import org.jetbrains.annotations.Nullable;
-
-import javax.swing.*;
-import javax.swing.table.TableCellRenderer;
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.Comparator;
-
-/**
- * User: evgeny.zakrevsky
- * Date: 11/8/12
- */
-public class TasksToolWindowPanel extends SimpleToolWindowPanel implements Disposable {
-
- private final ListTableModel myTableModel;
- private final TimeTrackingManager myTimeTrackingManager;
- private final Project myProject;
- private Timer myTimer;
- private final TableView myTable;
- private final TaskManager myTaskManager;
-
- public TasksToolWindowPanel(final Project project, final boolean vertical) {
- super(vertical);
- myProject = project;
- myTimeTrackingManager = TimeTrackingManager.getInstance(project);
- myTaskManager = TaskManager.getManager(project);
-
- myTable = new TableView(createListModel());
- myTableModel = myTable.getListTableModel();
- updateTable();
-
- setContent(ScrollPaneFactory.createScrollPane(myTable, true));
- setToolbar(createToolbar());
-
- myTaskManager.addTaskListener(new TaskListenerAdapter() {
- @Override
- public void taskDeactivated(final LocalTask task) {
- myTable.repaint();
- }
-
- @Override
- public void taskActivated(final LocalTask task) {
- myTable.repaint();
- }
-
- @Override
- public void taskAdded(final LocalTask task) {
- updateTable();
- }
-
- @Override
- public void taskRemoved(final LocalTask task) {
- updateTable();
- }
- });
-
- myTimer = new Timer(TimeTrackingManager.TIME_TRACKING_TIME_UNIT, new ActionListener() {
- @Override
- public void actionPerformed(final ActionEvent e) {
- myTable.repaint();
- }
- });
- myTimer.start();
- }
-
- private static SimpleTextAttributes getAttributes(final boolean isClosed, final boolean isActive, final boolean isSelected) {
- return new SimpleTextAttributes(isActive ? SimpleTextAttributes.STYLE_BOLD : SimpleTextAttributes.STYLE_PLAIN,
- isSelected
- ? UIUtil.getTableSelectionForeground()
- : isClosed && !isActive ? UIUtil.getLabelDisabledForeground() : UIUtil.getTableForeground());
- }
-
- private static String formatDuration(final long milliseconds) {
- final int second = 1000;
- final int minute = 60 * second;
- final int hour = 60 * minute;
- final int day = 24 * hour;
- final int days = (int)milliseconds / day;
- String daysString = days != 0 ? days + "d " : "";
-
- return daysString + String.format("%d:%02d:%02d", milliseconds % day / hour, milliseconds % hour / minute,
- milliseconds % minute / second);
- }
-
- private JComponent createToolbar() {
- DefaultActionGroup group = new DefaultActionGroup();
- final AnAction action = ActionManager.getInstance().getAction(GotoTaskAction.ID);
- assert action instanceof GotoTaskAction;
- final GotoTaskAction gotoTaskAction = (GotoTaskAction)action;
- group.add(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("Show closed tasks", "Show closed tasks", AllIcons.Actions.Checked) {
- @Override
- public boolean isSelected(final AnActionEvent e) {
- return myTimeTrackingManager.getState().showClosedTasks;
- }
-
- @Override
- public void setSelected(final AnActionEvent e, final boolean state) {
- myTimeTrackingManager.getState().showClosedTasks = state;
- updateTable();
- }
- });
- group.add(new ModeToggleAction());
- group.add(new StartStopAction());
-
- if (timeManagementExist()) {
- group.add(new AnAction("Post work item to bugtracker", "Post work item to bugtracker", AllIcons.Actions.Export) {
- @Override
- public void actionPerformed(final AnActionEvent e) {
- final LocalTask localTask = myTable.getSelectedObject();
- if (localTask == null) return;
- new SendTimeTrackingInformationDialog(myProject, localTask).show();
- }
-
- @Override
- public void update(final AnActionEvent e) {
- final LocalTask localTask = myTable.getSelectedObject();
- if (localTask == null) {
- e.getPresentation().setEnabled(false);
- }
- else {
- final TaskRepository repository = localTask.getRepository();
- e.getPresentation().setEnabled(repository != null && repository.isSupported(TaskRepository.TIME_MANAGEMENT));
- }
- }
- });
-
- group.add(new ToggleAction("Show time spent from last post of work item", "Show time spent from last post of work item",
- TasksIcons.Clock) {
- @Override
- public boolean isSelected(final AnActionEvent e) {
- return myTimeTrackingManager.getState().showSpentTimeFromLastPost;
- }
-
- @Override
- public void setSelected(final AnActionEvent e, final boolean state) {
- myTimeTrackingManager.getState().showSpentTimeFromLastPost = state;
- myTable.repaint();
- }
- });
- }
- final ActionToolbar actionToolBar = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, group, myVertical);
- return actionToolBar.getComponent();
- }
-
- private void updateTable() {
- myTableModel.setItems(ContainerUtil.filter(myTaskManager.getLocalTasks(),
- new Condition() {
- @Override
- public boolean value(final LocalTask task) {
- return task.isActive() ||
- (task.getTotalTimeSpent() != 0 &&
- (myTimeTrackingManager.getState().showClosedTasks ||
- !myTaskManager.isLocallyClosed(task)));
- }
- }));
- }
-
- private ListTableModel createListModel() {
- final ColumnInfo task = new ColumnInfo("Task") {
-
- @Nullable
- @Override
- public String valueOf(final LocalTask task) {
- return task.getPresentableName();
- }
-
- @Nullable
- @Override
- public TableCellRenderer getRenderer(final LocalTask task) {
- return new TableCellRenderer() {
- @Override
- public Component getTableCellRendererComponent(final JTable table,
- final Object value,
- final boolean isSelected,
- final boolean hasFocus,
- final int row,
- final int column) {
- JPanel panel = new JPanel(new BorderLayout());
- panel.setBackground(UIUtil.getTableBackground(isSelected));
- final SimpleColoredComponent component = new SimpleColoredComponent();
- final boolean isClosed = task.isClosed() || myTaskManager.isLocallyClosed(task);
- final boolean isActive = task.isActive();
- final boolean isRunning = myTimeTrackingManager.getState().autoMode ? isActive : isActive && task.isRunning();
- component.append((String)value, getAttributes(isClosed, isActive, isSelected));
- component.setIcon(isRunning
- ? LayeredIcon.create(task.getIcon(), AllIcons.Nodes.RunnableMark)
- : isClosed && !isActive ? IconLoader.getTransparentIcon(task.getIcon()) : task.getIcon());
- component.setOpaque(false);
- panel.add(component, BorderLayout.CENTER);
- panel.setOpaque(true);
- return panel;
- }
- };
- }
-
- @Nullable
- @Override
- public Comparator getComparator() {
- return new Comparator() {
- public int compare(LocalTask o1, LocalTask o2) {
- int i = Comparing.compare(o2.getUpdated(), o1.getUpdated());
- return i == 0 ? Comparing.compare(o2.getCreated(), o1.getCreated()) : i;
- }
- };
- }
- };
-
- final ColumnInfo spentTime = new ColumnInfo("Time Spent") {
- @Nullable
- @Override
- public String valueOf(final LocalTask task) {
- long timeSpent =
- myTimeTrackingManager.getState().showSpentTimeFromLastPost ? task.getTimeSpentFromLastPost() : task.getTotalTimeSpent();
- if (task.isActive()) {
- return formatDuration(timeSpent);
- }
- return DateFormatUtil.formatDuration(timeSpent);
- }
-
- @Nullable
- @Override
- public TableCellRenderer getRenderer(final LocalTask task) {
- return new TableCellRenderer() {
- @Override
- public Component getTableCellRendererComponent(final JTable table,
- final Object value,
- final boolean isSelected,
- final boolean hasFocus,
- final int row,
- final int column) {
- JPanel panel = new JPanel(new BorderLayout());
- panel.setBackground(UIUtil.getTableBackground(isSelected));
- final SimpleColoredComponent component = new SimpleColoredComponent();
- final boolean isClosed = task.isClosed() || myTaskManager.isLocallyClosed(task);
- final boolean isActive = task.isActive();
- component.append((String)value, getAttributes(isClosed, isActive, isSelected));
- component.setOpaque(false);
- panel.add(component, BorderLayout.CENTER);
- panel.setOpaque(true);
- return panel;
- }
- };
- }
-
- @Nullable
- @Override
- public Comparator getComparator() {
- return new Comparator() {
- @Override
- public int compare(final LocalTask o1, final LocalTask o2) {
- final long timeSpent1 =
- myTimeTrackingManager.getState().showSpentTimeFromLastPost ? o1.getTimeSpentFromLastPost() : o1.getTotalTimeSpent();
- final long timeSpent2 =
- myTimeTrackingManager.getState().showSpentTimeFromLastPost ? o2.getTimeSpentFromLastPost() : o2.getTotalTimeSpent();
- return Comparing.compare(timeSpent1, timeSpent2);
- }
- };
- }
- };
-
- return new ListTableModel((new ColumnInfo[]{task, spentTime}));
- }
-
- private boolean timeManagementExist() {
- for (TaskRepository repository : myTaskManager.getAllRepositories()) {
- if (repository.isSupported(TaskRepository.TIME_MANAGEMENT)) {
- return true;
- }
- }
- return false;
- }
-
- @Override
- public void dispose() {
- myTimer.stop();
- myTimer = null;
- }
-
- private class StartStopAction extends AnAction {
- @Override
- public void update(final AnActionEvent e) {
- if (myTimeTrackingManager.getState().autoMode) {
- e.getPresentation().setEnabled(false);
- e.getPresentation().setIcon(TasksIcons.StartTimer);
- e.getPresentation().setText("Start timer for active task");
- }
- else {
- e.getPresentation().setEnabled(true);
- if (myTaskManager.getActiveTask().isRunning()) {
- e.getPresentation().setIcon(TasksIcons.StopTimer);
- e.getPresentation().setText("Stop timer for active task");
- }
- else {
- e.getPresentation().setIcon(TasksIcons.StartTimer);
- e.getPresentation().setText("Start timer for active task");
- }
- }
- }
-
- @Override
- public void actionPerformed(final AnActionEvent e) {
- final LocalTask activeTask = myTaskManager.getActiveTask();
- if (activeTask.isRunning()) {
- activeTask.setRunning(false);
- }
- else {
- activeTask.setRunning(true);
- }
- }
- }
-
- private class ModeToggleAction extends ToggleAction {
- public ModeToggleAction() {
- super("Auto mode", "Automatic starting and stopping of timer", TasksIcons.AutoMode);
- }
-
- @Override
- public boolean isSelected(final AnActionEvent e) {
- return myTimeTrackingManager.getState().autoMode;
- }
-
- @Override
- public void setSelected(final AnActionEvent e, final boolean state) {
- myTimeTrackingManager.setAutoMode(state);
- updateTable();
- }
- }
-}
diff --git a/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/TimeTrackingConfigurable.form b/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/TimeTrackingConfigurable.form
deleted file mode 100644
index 26dfc39e8f7c..000000000000
--- a/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/TimeTrackingConfigurable.form
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
diff --git a/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/TimeTrackingConfigurable.java b/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/TimeTrackingConfigurable.java
deleted file mode 100644
index ba0f21bcd3d6..000000000000
--- a/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/TimeTrackingConfigurable.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package com.intellij.tasks.timeTracking;
-
-import com.intellij.openapi.options.Configurable;
-import com.intellij.openapi.options.SearchableConfigurable;
-import com.intellij.openapi.project.Project;
-import com.intellij.ui.GuiUtils;
-import org.jetbrains.annotations.Nls;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import javax.swing.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-/**
- * User: Evgeny.Zakrevsky
- * Date: 11/19/12
- */
-public class TimeTrackingConfigurable implements SearchableConfigurable, Configurable.NoScroll {
- private JCheckBox myEnableTimeTrackingCheckBox;
- private JTextField myTimeTrackingSuspendDelay;
- private JPanel myTimeTrackingSettings;
- private JPanel myPanel;
- private Project myProject;
-
-
- public TimeTrackingConfigurable(Project project) {
- myProject = project;
- myEnableTimeTrackingCheckBox.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- enableTimeTrackingPanel();
- }
- });
- }
-
- private void enableTimeTrackingPanel() {
- GuiUtils.enableChildren(myTimeTrackingSettings, myEnableTimeTrackingCheckBox.isSelected());
- }
-
- private TimeTrackingManager.Config getConfig() {
- return TimeTrackingManager.getInstance(myProject).getState();
- }
-
- @Override
- public void reset() {
- myEnableTimeTrackingCheckBox.setSelected(getConfig().enabled);
- myTimeTrackingSuspendDelay.setText(String.valueOf(getConfig().suspendDelayInSeconds));
- enableTimeTrackingPanel();
- }
-
- @Override
- public void disposeUIResources() {
- }
-
-
- @Override
- public boolean isModified() {
- return myEnableTimeTrackingCheckBox.isSelected() != getConfig().enabled ||
- !myTimeTrackingSuspendDelay.getText().equals(String.valueOf(getConfig().suspendDelayInSeconds));
- }
-
- @Override
- public void apply() {
- boolean oldTimeTrackingEnabled = getConfig().enabled;
- getConfig().enabled = myEnableTimeTrackingCheckBox.isSelected();
- if (getConfig().enabled != oldTimeTrackingEnabled) {
- TimeTrackingManager.getInstance(myProject).updateTimeTrackingToolWindow();
- }
- try{
- getConfig().suspendDelayInSeconds = Integer.parseInt(myTimeTrackingSuspendDelay.getText());
- }
- catch (NumberFormatException ignored) {
- }
- }
-
- @NotNull
- @Override
- public String getId() {
- return "tasks.timeTracking";
- }
-
- @Nullable
- @Override
- public Runnable enableSearch(final String option) {
- return null;
- }
-
- @Nls
- @Override
- public String getDisplayName() {
- return "Time Tracking";
- }
-
- @Nullable
- @Override
- public String getHelpTopic() {
- return null;
- //return "reference.settings.project.tasks.timeTracking";
- }
-
- @Nullable
- @Override
- public JComponent createComponent() {
- return myPanel;
- }
-}
diff --git a/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/TimeTrackingManager.java b/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/TimeTrackingManager.java
deleted file mode 100644
index b78a24db5304..000000000000
--- a/plugins/tasks/tasks-time-tracking/src/com/intellij/tasks/timeTracking/TimeTrackingManager.java
+++ /dev/null
@@ -1,218 +0,0 @@
-package com.intellij.tasks.timeTracking;
-
-import com.intellij.ide.IdeEventQueue;
-import com.intellij.openapi.application.ApplicationManager;
-import com.intellij.openapi.components.*;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.startup.StartupManager;
-import com.intellij.openapi.util.Disposer;
-import com.intellij.openapi.wm.*;
-import com.intellij.tasks.LocalTask;
-import com.intellij.tasks.TaskManager;
-import com.intellij.tasks.timeTracking.model.WorkItem;
-import com.intellij.util.Alarm;
-import com.intellij.util.ui.UIUtil;
-import com.intellij.util.xmlb.XmlSerializerUtil;
-import org.jetbrains.annotations.NotNull;
-
-import javax.swing.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.Date;
-
-/**
- * User: Evgeny.Zakrevsky
- * Date: 11/19/12
- */
-
-@State(
- name = "TimeTrackingManager",
- storages = {
- @Storage(file = StoragePathMacros.WORKSPACE_FILE)
- }
-)
-public class TimeTrackingManager implements ProjectComponent, PersistentStateComponent {
-
- public static final int TIME_TRACKING_TIME_UNIT = 1000;
-
- private final Project myProject;
- private final TaskManager myTaskManager;
- private final Config myConfig = new Config();
- private Timer myTimeTrackingTimer;
- private final Alarm myIdleAlarm = new Alarm(Alarm.ThreadToUse.SWING_THREAD);
- private Runnable myActivityListener;
- private LocalTask myLastActiveTask;
-
- public TimeTrackingManager(Project project,
- TaskManager taskManager) {
- myProject = project;
- myTaskManager = taskManager;
- }
-
- public static TimeTrackingManager getInstance(Project project) {
- return project.getComponent(TimeTrackingManager.class);
- }
-
- private void startTimeTrackingTimer() {
- if (!myTimeTrackingTimer.isRunning()) {
- myTimeTrackingTimer.start();
- }
-
- myIdleAlarm.cancelAllRequests();
- myIdleAlarm.addRequest(new Runnable() {
- @Override
- public void run() {
- if (myTimeTrackingTimer.isRunning()) {
- myTimeTrackingTimer.stop();
- }
- }
- }, getState().suspendDelayInSeconds * 1000);
- }
-
- public void updateTimeTrackingToolWindow() {
- ToolWindow toolWindow = ToolWindowManager.getInstance(myProject).getToolWindow(ToolWindowId.TASKS);
- if (isTimeTrackingToolWindowAvailable()) {
- if (toolWindow == null) {
- toolWindow =
- ToolWindowManager.getInstance(myProject).registerToolWindow(ToolWindowId.TASKS, true, ToolWindowAnchor.RIGHT, myProject, true);
- new TasksToolWindowFactory().createToolWindowContent(myProject, toolWindow);
- }
- final ToolWindow finalToolWindow = toolWindow;
- ApplicationManager.getApplication().invokeLater(new Runnable() {
- @Override
- public void run() {
- finalToolWindow.setAvailable(true, null);
- finalToolWindow.show(null);
- finalToolWindow.activate(null);
- }
- });
- }
- else {
- if (toolWindow != null) {
- final ToolWindow finalToolWindow = toolWindow;
- ApplicationManager.getApplication().invokeLater(new Runnable() {
- @Override
- public void run() {
- finalToolWindow.setAvailable(false, null);
- }
- });
- }
- }
- }
-
- public boolean isTimeTrackingToolWindowAvailable() {
- return getState().enabled;
- }
-
- @Override
- public void initComponent() {
- if (!ApplicationManager.getApplication().isUnitTestMode()) {
- myTimeTrackingTimer = UIUtil.createNamedTimer("TaskManager time tracking", TIME_TRACKING_TIME_UNIT, new ActionListener() {
- @Override
- public void actionPerformed(final ActionEvent e) {
- final LocalTask activeTask = myTaskManager.getActiveTask();
- if (myLastActiveTask != activeTask) {
- activeTask.addWorkItem(new WorkItem(new Date()));
- }
- if (getState().autoMode) {
- final WorkItem lastWorkItem = activeTask.getWorkItems().get(activeTask.getWorkItems().size() - 1);
- lastWorkItem.duration += TIME_TRACKING_TIME_UNIT;
- getState().totallyTimeSpent += TIME_TRACKING_TIME_UNIT;
- }
- else {
- if (activeTask.isRunning()) {
- final WorkItem lastWorkItem = activeTask.getWorkItems().get(activeTask.getWorkItems().size() - 1);
- lastWorkItem.duration += TIME_TRACKING_TIME_UNIT;
- getState().totallyTimeSpent += TIME_TRACKING_TIME_UNIT;
- }
- }
- myLastActiveTask = activeTask;
- }
- });
- StartupManager.getInstance(myProject).registerStartupActivity(new Runnable() {
- public void run() {
- ApplicationManager.getApplication().invokeLater(new Runnable() {
- @Override
- public void run() {
- startTimeTrackingTimer();
- }
- });
- }
- });
-
- myActivityListener = new Runnable() {
- @Override
- public void run() {
- final IdeFrame frame = IdeFocusManager.getGlobalInstance().getLastFocusedFrame();
- if (frame == null) return;
- final Project project = frame.getProject();
- if (project == null || !myProject.equals(project)) return;
- startTimeTrackingTimer();
- }
- };
- if (getState().autoMode) {
- IdeEventQueue.getInstance().addActivityListener(myActivityListener, myProject);
- }
- }
- }
-
- public void setAutoMode(final boolean on) {
- final boolean oldState = getState().autoMode;
- if (on != oldState) {
- getState().autoMode = on;
- if (on) {
- IdeEventQueue.getInstance().addActivityListener(myActivityListener, myProject);
- }
- else {
- IdeEventQueue.getInstance().removeActivityListener(myActivityListener);
- myIdleAlarm.cancelAllRequests();
- if (!myTimeTrackingTimer.isRunning()) {
- myTimeTrackingTimer.start();
- }
- }
- }
- }
-
- @Override
- public void disposeComponent() {
- if (myTimeTrackingTimer != null) {
- myTimeTrackingTimer.stop();
- }
- myIdleAlarm.cancelAllRequests();
- Disposer.dispose(myIdleAlarm);
- }
-
- @NotNull
- @Override
- public String getComponentName() {
- return "Time Tracking Manager";
- }
-
- @NotNull
- @Override
- public TimeTrackingManager.Config getState() {
- return myConfig;
- }
-
- @Override
- public void loadState(final TimeTrackingManager.Config state) {
- XmlSerializerUtil.copyBean(state, myConfig);
- }
-
- @Override
- public void projectOpened() {
- }
-
- @Override
- public void projectClosed() {
- }
-
- public static class Config {
- public boolean enabled = false;
- public long totallyTimeSpent = 0;
- public int suspendDelayInSeconds = 600;
- public boolean autoMode = true;
- public boolean showClosedTasks = true;
- public boolean showSpentTimeFromLastPost = false;
- }
-}
diff --git a/plugins/tasks/tasks-time-tracking/tasks-time-tracking.iml b/plugins/tasks/tasks-time-tracking/tasks-time-tracking.iml
deleted file mode 100644
index ecee65315829..000000000000
--- a/plugins/tasks/tasks-time-tracking/tasks-time-tracking.iml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-