ReloadListAction.java revision 554d7ee0f5d177b6c0bce805f5a5917b6b211978
13330b203039dea366d4981db1408a460134b2d2cMathias Agopian/*
23330b203039dea366d4981db1408a460134b2d2cMathias Agopian * Copyright (C) 2015 The Android Open Source Project
33330b203039dea366d4981db1408a460134b2d2cMathias Agopian *
43330b203039dea366d4981db1408a460134b2d2cMathias Agopian * Licensed under the Apache License, Version 2.0 (the "License");
53330b203039dea366d4981db1408a460134b2d2cMathias Agopian * you may not use this file except in compliance with the License.
63330b203039dea366d4981db1408a460134b2d2cMathias Agopian * You may obtain a copy of the License at
73330b203039dea366d4981db1408a460134b2d2cMathias Agopian *
83330b203039dea366d4981db1408a460134b2d2cMathias Agopian *      http://www.apache.org/licenses/LICENSE-2.0
93330b203039dea366d4981db1408a460134b2d2cMathias Agopian *
103330b203039dea366d4981db1408a460134b2d2cMathias Agopian * Unless required by applicable law or agreed to in writing, software
113330b203039dea366d4981db1408a460134b2d2cMathias Agopian * distributed under the License is distributed on an "AS IS" BASIS,
123330b203039dea366d4981db1408a460134b2d2cMathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133330b203039dea366d4981db1408a460134b2d2cMathias Agopian * See the License for the specific language governing permissions and
143330b203039dea366d4981db1408a460134b2d2cMathias Agopian * limitations under the License.
153330b203039dea366d4981db1408a460134b2d2cMathias Agopian */
163330b203039dea366d4981db1408a460134b2d2cMathias Agopian
173330b203039dea366d4981db1408a460134b2d2cMathias Agopianpackage com.android.preload.actions;
183330b203039dea366d4981db1408a460134b2d2cMathias Agopian
193330b203039dea366d4981db1408a460134b2d2cMathias Agopianimport com.android.ddmlib.Client;
203330b203039dea366d4981db1408a460134b2d2cMathias Agopianimport com.android.ddmlib.IDevice;
213330b203039dea366d4981db1408a460134b2d2cMathias Agopianimport com.android.preload.ClientUtils;
223330b203039dea366d4981db1408a460134b2d2cMathias Agopian
235f2165f9455d4893b581b73a67c5431f4344b47eMathias Agopianimport java.util.Arrays;
243330b203039dea366d4981db1408a460134b2d2cMathias Agopianimport java.util.Comparator;
253330b203039dea366d4981db1408a460134b2d2cMathias Agopian
2698e71ddaede9a0bfb681fd237bec1f66c6c53193Mathias Agopianimport javax.swing.DefaultListModel;
27e041716ba17674b9af957f68750ad6b2df376c22Mathias Agopian
285f2165f9455d4893b581b73a67c5431f4344b47eMathias Agopianpublic class ReloadListAction extends AbstractThreadedDeviceSpecificAction {
293330b203039dea366d4981db1408a460134b2d2cMathias Agopian
30697526bc9e44ce61c88614f98387ae8bbf0a187eIliyan Malchev    private ClientUtils clientUtils;
313330b203039dea366d4981db1408a460134b2d2cMathias Agopian    private final DefaultListModel<Client> clientListModel;
323330b203039dea366d4981db1408a460134b2d2cMathias Agopian
333330b203039dea366d4981db1408a460134b2d2cMathias Agopian    public ReloadListAction(ClientUtils utils, IDevice device,
343330b203039dea366d4981db1408a460134b2d2cMathias Agopian            DefaultListModel<Client> clientListModel) {
353330b203039dea366d4981db1408a460134b2d2cMathias Agopian        super("Reload", device);
363330b203039dea366d4981db1408a460134b2d2cMathias Agopian        this.clientUtils = utils;
373330b203039dea366d4981db1408a460134b2d2cMathias Agopian        this.clientListModel = clientListModel;
383330b203039dea366d4981db1408a460134b2d2cMathias Agopian    }
393330b203039dea366d4981db1408a460134b2d2cMathias Agopian
403330b203039dea366d4981db1408a460134b2d2cMathias Agopian    @Override
41e041716ba17674b9af957f68750ad6b2df376c22Mathias Agopian    public void run() {
42e041716ba17674b9af957f68750ad6b2df376c22Mathias Agopian        Client[] clients = clientUtils.findAllClients(device);
433330b203039dea366d4981db1408a460134b2d2cMathias Agopian        if (clients != null) {
443330b203039dea366d4981db1408a460134b2d2cMathias Agopian            Arrays.sort(clients, new ClientComparator());
453330b203039dea366d4981db1408a460134b2d2cMathias Agopian        }
463330b203039dea366d4981db1408a460134b2d2cMathias Agopian        clientListModel.removeAllElements();
473330b203039dea366d4981db1408a460134b2d2cMathias Agopian        for (Client c : clients) {
483330b203039dea366d4981db1408a460134b2d2cMathias Agopian            clientListModel.addElement(c);
493330b203039dea366d4981db1408a460134b2d2cMathias Agopian        }
503330b203039dea366d4981db1408a460134b2d2cMathias Agopian    }
513330b203039dea366d4981db1408a460134b2d2cMathias Agopian
523330b203039dea366d4981db1408a460134b2d2cMathias Agopian    private static class ClientComparator implements Comparator<Client> {
533330b203039dea366d4981db1408a460134b2d2cMathias Agopian
543330b203039dea366d4981db1408a460134b2d2cMathias Agopian        @Override
553330b203039dea366d4981db1408a460134b2d2cMathias Agopian        public int compare(Client o1, Client o2) {
5616f0453fee84c6aad59fe0d1c7d36f061d46cffcGlenn Kasten            String s1 = o1.getClientData().getClientDescription();
573330b203039dea366d4981db1408a460134b2d2cMathias Agopian            String s2 = o2.getClientData().getClientDescription();
5816f0453fee84c6aad59fe0d1c7d36f061d46cffcGlenn Kasten
5916f0453fee84c6aad59fe0d1c7d36f061d46cffcGlenn Kasten            if (s1 == null || s2 == null) {
6016f0453fee84c6aad59fe0d1c7d36f061d46cffcGlenn Kasten                // Not good, didn't get all data?
613330b203039dea366d4981db1408a460134b2d2cMathias Agopian                return (s1 == null) ? -1 : 1;
623330b203039dea366d4981db1408a460134b2d2cMathias Agopian            }
633330b203039dea366d4981db1408a460134b2d2cMathias Agopian
643599bf2c0727bc33e8136f5163eee6f398545e05Jamie Gennis            return s1.compareTo(s2);
65b7d87c40ef3f922fb10f6a4f24e6e1437ab3c7aeJamie Gennis        }
663330b203039dea366d4981db1408a460134b2d2cMathias Agopian
673330b203039dea366d4981db1408a460134b2d2cMathias Agopian    }
683330b203039dea366d4981db1408a460134b2d2cMathias Agopian}