e82d4bbc790f09e32ccb8f06802b714aaf9e0492
[idea/community.git] / platform / external-system-impl / src / com / intellij / openapi / externalSystem / service / task / ui / ExternalSystemRecentTaskListModel.java
1 /*
2  * Copyright 2000-2013 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.openapi.externalSystem.service.task.ui;
17
18 import com.intellij.openapi.externalSystem.model.execution.ExternalTaskExecutionInfo;
19 import com.intellij.util.containers.ContainerUtilRt;
20 import org.jetbrains.annotations.NotNull;
21
22 import javax.swing.*;
23 import java.util.List;
24
25 /**
26  * @author Denis Zhdanov
27  * @since 6/7/13 3:28 PM
28  */
29 public class ExternalSystemRecentTaskListModel extends DefaultListModel {
30
31   public void setTasks(@NotNull List<ExternalTaskExecutionInfo> tasks) {
32     clear();
33     List<ExternalTaskExecutionInfo> tasksToUse = ContainerUtilRt.newArrayList(tasks);
34     for (ExternalTaskExecutionInfo task : tasksToUse) {
35       addElement(task);
36     }
37   }
38
39   public void setFirst(@NotNull ExternalTaskExecutionInfo task) {
40     insertElementAt(task, 0);
41     if (size() > 1) {
42       remove(size() - 1);
43     }
44     for (int i = 1; i < size(); i++) {
45       if (task.equals(getElementAt(i))) {
46         remove(i);
47         return;
48       }
49     }
50   }
51
52   @NotNull
53   public List<ExternalTaskExecutionInfo> getTasks() {
54     List<ExternalTaskExecutionInfo> result = ContainerUtilRt.newArrayList();
55     for (int i = 0; i < size(); i++) {
56       Object e = getElementAt(i);
57       if (e instanceof ExternalTaskExecutionInfo) {
58         result.add((ExternalTaskExecutionInfo)e);
59       }
60     }
61     return result;
62   }
63
64   public void ensureSize(int elementsNumber) {
65     int toAdd = elementsNumber - size();
66     if (toAdd <= 0) {
67       return;
68     }
69     while (--toAdd >= 0) {
70       addElement(new MyEmptyDescriptor());
71     }
72   }
73
74   static class MyEmptyDescriptor {
75   }
76 }