Android Open Source - SmartTools Page App Mgr






From Project

Back to project page SmartTools.

License

The source code is released under:

GNU General Public License

If you think the Android project SmartTools listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.nj.simba.page.appmgr;
/*www  .  ja  va  2  s  .  c o m*/
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.HashMap;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;
import com.nj.simba.app.SmartToolsApp;
import com.nj.simba.IDeviceInfo.AppInfo;
import com.nj.simba.ctrls.TabPanel;
import com.nj.simba.ctrls.ThemeLabel;
import com.nj.simba.utils.Config;
import com.nj.simba.utils.FileSyncHelper;
import com.nj.simba.utils.Utils;


public class PageAppMgr extends TabPanel {
    private DefaultTableModel mDeviceAppsModel;
    private JTable mDeviceApps;
    private JLabel mRightTitle;
    private JLabel mRightIconLabel;
    
    private JButton mBtnSysApp;
    private JButton mBtnUserApp;
    private JButton mBtnMusic;
    private JButton mBtnPicture;
    private JButton mBtnRingTone;
    private JButton mBtnUninstall;
    private JButton mBtnGetApk;
    private JButton mBtnGetMore;
    
    private ThemeLabel mRightAppName;
    private ThemeLabel mRightAppVersion;
    private ThemeLabel mRightAppInstallDate;
    
    private int mCurSel = 0;
  private boolean mIsLastOK;
  private boolean mIsSysApps;
   
    private HashMap<String, AppInfo> mAppInfos;
    private JPanel mRightCardPanel;
    private CardLayout mRightCardLayout;
    private ThemeLabel mTipLabel;

    
    public PageAppMgr(JPanel parent, JPanel tabPanel, int x, int y, int w,
            int h) {
        super(tabPanel, x, y, w, h);
    }
    
    public PageAppMgr(JPanel tabPanel) {
        super(tabPanel);
    }

    @Override
    protected void addBody() {
        super.addBody();
        
        mDeviceAppsModel= new AppListModel();
        mDeviceApps = getAppList(mDeviceAppsModel);
        
        JScrollPane scroll = new JScrollPane(mDeviceApps);
        scroll.setBounds(8, 4, Config.PANEL_BODY_WIDTH - 8*2, Config.PANEL_LEFT_HEIGHT - 4*2);
        scroll.setOpaque(false);
        scroll.getViewport().setOpaque(false);
        scroll.setBorder(BorderFactory.createEmptyBorder());
        mBodyPanel.add(scroll);
    }

    private JTable getAppList(DefaultTableModel model) {
      String columns[] = { "icon", "name", "package", "apk", "running", "uid" };
      model.setColumnIdentifiers(columns);

      JTable listApps = new JTable(model);
      listApps.setBounds(0, 0, Config.PANEL_BODY_WIDTH - 8*2, 550);
      listApps.setDefaultRenderer(Object.class, new AppTableRender());
      listApps.setOpaque(false);
      listApps.getSelectionModel().setSelectionMode(
                ListSelectionModel.SINGLE_SELECTION);
      listApps.setRowHeight(36);
      
      TableColumnModel columnMode = listApps.getColumnModel();
      columnMode.getColumn(0).setPreferredWidth(48);
      columnMode.getColumn(1).setPreferredWidth(100);
      columnMode.getColumn(2).setPreferredWidth(160);
      columnMode.getColumn(3).setPreferredWidth(160);
      
        listApps.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if ( e.getClickCount() == 1 ) {
                    mCurSel = mDeviceApps.getSelectedRow();
                    updateRight();
                }
            }
        });

      return listApps;
    }

  @Override
    protected void addRight() {
      super.addRight();
      
    mRightTitle = new ThemeLabel(6, 0, Config.PANEL_RIGHT_WIDTH, 32);
    mRightTitle.setText("<html><h2 style=\"color:99cc00\">??????</h2></html>");
        mRightPanel.add(mRightTitle);
        
        mRightCardLayout = new CardLayout();
        mRightCardPanel = new JPanel();
        mRightCardPanel.setLayout(mRightCardLayout);
        mRightCardPanel.setOpaque(false);
        mRightCardPanel.setBounds(0, 44, Config.PANEL_RIGHT_WIDTH, Config.PANEL_RIGHT_HEIGHT - 48);
        
        JPanel appInfo = new JPanel();
        appInfo.setLayout(null);
        appInfo.setOpaque(false);
        appInfo.setBounds(0, 0, Config.PANEL_RIGHT_WIDTH, Config.PANEL_RIGHT_HEIGHT - 48);
        
        mRightIconLabel = new JLabel();
        mRightIconLabel.setBounds(6, 4, 32, 32);
        mRightIconLabel.setOpaque(false);
        appInfo.add(mRightIconLabel);
        
        mRightAppName = new ThemeLabel(40, 4, 150, 32);
        appInfo.add(mRightAppName);
        
        mRightAppVersion = new ThemeLabel(6, 36, 150, 24);
        appInfo.add(mRightAppVersion);
        
        mRightAppInstallDate = new ThemeLabel(6, 60, 150, 24);
        appInfo.add(mRightAppInstallDate);
        
        mBtnUninstall = getButton("????");
        mBtnUninstall.setBounds(6, 100, 80, 24);
        appInfo.add(mBtnUninstall);
        
        mBtnGetApk = getButton("????");
        mBtnGetApk.setBounds(90, 100, 80, 24);
        appInfo.add(mBtnGetApk);
        
        mBtnGetMore = getButton("??????????");
        mBtnGetMore.setBounds(6, 132, 164, 24);
        appInfo.add(mBtnGetMore);
        
        mRightPanel.add(mRightCardPanel);
        mRightCardPanel.add("appinfo", appInfo);
        
        JPanel tipPanel = new JPanel();
        tipPanel.setLayout(null);
        tipPanel.setOpaque(false);
        tipPanel.setBounds(0, 0, Config.PANEL_RIGHT_WIDTH, Config.PANEL_RIGHT_HEIGHT - 48);
        
        mTipLabel = new ThemeLabel("????????????????????");
        mTipLabel.setBounds(6, 4, 150, 32);
        tipPanel.add(mTipLabel);
        mRightCardPanel.add("tipinfo", tipPanel);
        
        mRightCardLayout.show(mRightCardPanel, "tipinfo");
    }
  
  @Override
    protected void addLeft() {
        super.addLeft();
        
        JLabel appTitle = new JLabel();
        appTitle.setIcon(Utils.getResImage("res/app_title.png"));
        appTitle.setBounds(0, 4, Config.PANEL_LEFT_WIDTH, 24);
        appTitle.setOpaque(true);
        mLeftPanel.add(appTitle);
        
        mBtnSysApp = getButton("?????");
        mBtnSysApp.setBounds(0, 30, Config.PANEL_LEFT_WIDTH, 32);
        mLeftPanel.add(mBtnSysApp);
        
        mBtnUserApp = getButton("?????");
        mBtnUserApp.setBounds(0, 61, Config.PANEL_LEFT_WIDTH, 32);
        mLeftPanel.add(mBtnUserApp);
        
        ////////////////////////////////////////////////////////////
        JLabel mediaTitle = new JLabel();
        mediaTitle.setIcon(Utils.getResImage("res/media_title.png"));
        mediaTitle.setBounds(0, 126, Config.PANEL_LEFT_WIDTH, 24);
        mediaTitle.setOpaque(true);
        mLeftPanel.add(mediaTitle);
        
        mBtnMusic = getButton("?????");
        mBtnMusic.setBounds(0, 150, Config.PANEL_LEFT_WIDTH, 32);
        mLeftPanel.add(mBtnMusic);
        
        mBtnPicture = getButton("????");
        mBtnPicture.setBounds(0, 181, Config.PANEL_LEFT_WIDTH, 32);
        mLeftPanel.add(mBtnPicture);
        
        mBtnRingTone = getButton("????");
        mBtnRingTone.setBounds(0, 212, Config.PANEL_LEFT_WIDTH, 32);
        mLeftPanel.add(mBtnRingTone);
        
        
        ////////////////////////////////////////////////////////////
        JLabel contactTitle = new JLabel();
        contactTitle.setIcon(Utils.getResImage("res/contact_title.png"));
        contactTitle.setBounds(0, 260, Config.PANEL_LEFT_WIDTH, 24);
        contactTitle.setOpaque(true);
        mLeftPanel.add(contactTitle);
        
    }

    @Override
    protected void setTabPageName() {
        mTabPageName = "app-mgr";
    }

    private void updateRight() {
      if ( mDeviceAppsModel.getRowCount() == 0 ) {
      return;
    }
         
      mRightCardLayout.show(mRightCardPanel, "appinfo");
      
      String pkgName = (String) mDeviceAppsModel.getValueAt(mCurSel, 2);
      AppInfo app = mAppInfos.get(pkgName);
      
        ImageIcon icon = new ImageIcon(app.icon);
        mRightIconLabel.setIcon(icon);

        mRightAppName.setText((String) mDeviceAppsModel.getValueAt(mCurSel, 1));
        mRightAppVersion.setText(String.format("?????: %s", app.versionName));
        mRightAppInstallDate.setText(String.format("????: %s", app.installDate));
    }
    
    @SuppressWarnings("unchecked")
    protected void updateAppTable(AppInfo[] apps) {
        System.out.println("updateAppTable");

        mAppInfos = new HashMap<String, AppInfo>(apps.length);
        mDeviceAppsModel.getDataVector().clear();
        
        if ( apps == null ) {
            System.out.println("apps == null");
            mDeviceApps.invalidate();
            return;
        }
        
        System.out.println("mIsSysApps:" + mIsSysApps);

        for (AppInfo appInfo : apps) {
            Vector rowData = new Vector();

            rowData.add(appInfo.icon);
            rowData.add(appInfo.name);
            
            //rowData.add(appInfo.isSystem);
            //rowData.add(appInfo.isCtsPass);

            rowData.add(appInfo.pkgName);
            rowData.add(appInfo.pkgPath);

            rowData.add(appInfo.isRunning);
            rowData.add(appInfo.uid);

            //System.out.println("pkgPath:" + appInfo.pkgPath);

            if ( appInfo.isSystem && mIsSysApps ) {
                mDeviceAppsModel.addRow(rowData);
            }
            
            if ( !appInfo.isSystem  && !mIsSysApps ) {
                mDeviceAppsModel.addRow(rowData);
            }
            
            mAppInfos.put(appInfo.pkgName, appInfo);
        }

        mIsLastOK = true;
        mDeviceApps.invalidate();
    }
    
    @SuppressWarnings("serial")
  public static class AppListModel extends DefaultTableModel {

    @Override
    public boolean isCellEditable(int row, int column) {
      if ( column == 0 ) {
        return false;
      }
      return super.isCellEditable(row, column);
    }
    }

    @Override
    public void deviceConnected(SmartToolsApp app) {
        if ( mCurDevice == null ) {
            mIsLastOK = false;
        }
        
        super.deviceConnected(app);
        
        if ( !mIsDeviceChanged && mIsLastOK ) {
            return;
        } else {
            mIsLastOK = false;
        }
        
        updateAppTable(app.getApps());
    }
    
    @Override
    public void deviceDisconnected(SmartToolsApp app) {
        super.deviceDisconnected(app);
        System.out.println("PageAppMgr: deviceDisconnected");
    }
    
    @Override
    public void mouseClicked(MouseEvent e) {
        if ( e.getSource().equals(mBtnSysApp)) {
            mIsSysApps = true;
            updateAppTable(SmartToolsApp.getApp().getApps());
        } else if ( e.getSource().equals(mBtnUserApp)) {
            mIsSysApps = false;
            updateAppTable(SmartToolsApp.getApp().getApps());
        } else if ( e.getSource().equals(mBtnGetApk)) {
            pullFile();
        } else if ( e.getSource().equals(mBtnUninstall)) {
            //uninstall();
        }
    }
    
    private void pullFile() {
        String pkgName = (String) mDeviceAppsModel.getValueAt(mCurSel, 2);
        AppInfo app = mAppInfos.get(pkgName);
        String apkName =app.name + ".apk";
        String remote = app.pkgPath;
        
        System.out.println("pullFile: pkgName=" + pkgName + ", size=" + app.size);
        
        FileSyncHelper syncHelper = new FileSyncHelper(mCurDevice,
                remote, apkName, app.size);
        syncHelper.syncOut();
    }

    protected JButton getButton(String text) {
        JButton btn = new JButton(text);
        btn.setOpaque(false);
        btn.setContentAreaFilled(false);
        btn.setFocusable(false);
        btn.setForeground(Color.WHITE);
        btn.addMouseListener(this);
        return btn;
    }
    
    protected void showSysApps() {
        mIsSysApps = true;
        updateAppTable(SmartToolsApp.getApp().getApps());
    }
    
    protected void showUserApps() {
        mIsSysApps = false;
        updateAppTable(SmartToolsApp.getApp().getApps());
    }

}




Java Source Code List

com.nj.simba.BatteryReceiver.java
com.nj.simba.DaemonController.java
com.nj.simba.DeviceInfo.java
com.nj.simba.DviceInfoCollector.java
com.nj.simba.IDeviceInfo.java
com.nj.simba.PackageReceiver.java
com.nj.simba.SdcardStatuChangeReceiver.java
com.nj.simba.SmartToolService.java
com.nj.simba.app.MainFrame.java
com.nj.simba.app.SmartToolsApp.java
com.nj.simba.app.ToolbarPanel.java
com.nj.simba.base.IDeviceListener.java
com.nj.simba.base.IDeviceReqListener.java
com.nj.simba.connect.DeviceCmdWorker.java
com.nj.simba.connect.DeviceConnectWorker.java
com.nj.simba.connect.DeviceMessage.java
com.nj.simba.connect.DeviceMsgChannel.java
com.nj.simba.ctrls.FilerListRender.java
com.nj.simba.ctrls.ImageBtn.java
com.nj.simba.ctrls.LeftPanel.java
com.nj.simba.ctrls.MetroCoolBtn.java
com.nj.simba.ctrls.MyProgessBar.java
com.nj.simba.ctrls.SubPanel.java
com.nj.simba.ctrls.TabPanel.java
com.nj.simba.ctrls.ThemeButton.java
com.nj.simba.ctrls.ThemeLabel.java
com.nj.simba.ctrls.ToolbarBtn.java
com.nj.simba.cts.CtsResultReset.java
com.nj.simba.page.appmgr.AppTableRender.java
com.nj.simba.page.appmgr.DeviceAppTableModel.java
com.nj.simba.page.appmgr.PageAppMgr.java
com.nj.simba.page.device.DeviceListRender.java
com.nj.simba.page.device.DevicePanel.java
com.nj.simba.page.device.PageMyDevice.java
com.nj.simba.page.filer.FileTableRender.java
com.nj.simba.page.filer.PageFiler.java
com.nj.simba.page.logcat.ILogCatBufferChangeListener.java
com.nj.simba.page.logcat.LogCatMessageList.java
com.nj.simba.page.logcat.LogCatMessageParser.java
com.nj.simba.page.logcat.LogCatMessage.java
com.nj.simba.page.logcat.LogCatPidToNameMapper.java
com.nj.simba.page.logcat.LogCatReceiverFactory.java
com.nj.simba.page.logcat.LogCatReceiver.java
com.nj.simba.page.logcat.PageLogcat.java
com.nj.simba.utils.Config.java
com.nj.simba.utils.FileSyncHelper.java
com.nj.simba.utils.I2CTest.java
com.nj.simba.utils.IProgressMonitor.java
com.nj.simba.utils.SyncProgressHelper.java
com.nj.simba.utils.SyncProgressMonitor.java
com.nj.simba.utils.Utils.java