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}