Home | History | Annotate | Download | only in export
      1 /*
      2  * Copyright (C) 2010 The Android Open Source Project
      3  *
      4  * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php
      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 
     17 package com.android.ide.eclipse.adt.internal.editors.export;
     18 
     19 import com.android.ide.eclipse.adt.AdtPlugin;
     20 import com.android.ide.eclipse.adt.internal.editors.ui.SectionHelper.ManifestSectionPart;
     21 
     22 import org.eclipse.jface.text.DocumentEvent;
     23 import org.eclipse.swt.SWT;
     24 import org.eclipse.swt.graphics.Image;
     25 import org.eclipse.swt.widgets.Composite;
     26 import org.eclipse.swt.widgets.MessageBox;
     27 import org.eclipse.ui.forms.events.HyperlinkEvent;
     28 import org.eclipse.ui.forms.events.IHyperlinkListener;
     29 import org.eclipse.ui.forms.widgets.FormText;
     30 import org.eclipse.ui.forms.widgets.FormToolkit;
     31 import org.eclipse.ui.forms.widgets.Section;
     32 
     33 /**
     34  * Links section part for export properties page.
     35  * Displays some help and some links/actions for the user to use.
     36  */
     37 final class ExportLinksPart extends ManifestSectionPart {
     38 
     39     private FormText mFormText;
     40 
     41     public ExportLinksPart(Composite body, FormToolkit toolkit, ExportEditor editor) {
     42         super(body, toolkit, Section.TWISTIE | Section.EXPANDED, true /* description */);
     43         Section section = getSection();
     44         section.setText("Links");
     45         section.setDescription("TODO SOME TEXT HERE. You can also edit the XML directly.");
     46 
     47         final Composite table = createTableLayout(toolkit, 2 /* numColumns */);
     48 
     49         StringBuffer buf = new StringBuffer();
     50         buf.append("<form>"); //$NON-NLS-1$
     51 
     52         buf.append("<li style=\"image\" value=\"android_img\"><a href=\"action_dosomething\">");
     53         buf.append("TODO Custom Action");
     54         buf.append("</a>"); //$NON-NLS-1$
     55         buf.append(": blah blah do something (like build/export).");
     56         buf.append("</li>"); //$NON-NLS-1$
     57 
     58         buf.append(String.format("<li style=\"image\" value=\"android_img\"><a href=\"page:%1$s\">", //$NON-NLS-1$
     59                 ExportEditor.TEXT_EDITOR_ID));
     60         buf.append("XML Source");
     61         buf.append("</a>"); //$NON-NLS-1$
     62         buf.append(": Directly edit the AndroidManifest.xml file.");
     63         buf.append("</li>"); //$NON-NLS-1$
     64 
     65         buf.append("<li style=\"image\" value=\"android_img\">"); //$NON-NLS-1$
     66         buf.append("<a href=\"http://code.google.com/android/devel/bblocks-manifest.html\">Documentation</a>: Documentation from the Android SDK for AndroidManifest.xml."); //$NON-NLS-1$
     67         buf.append("</li>"); //$NON-NLS-1$
     68         buf.append("</form>"); //$NON-NLS-1$
     69 
     70         mFormText = createFormText(table, toolkit, true, buf.toString(),
     71                 false /* setupLayoutData */);
     72 
     73         Image androidLogo = AdtPlugin.getAndroidLogo();
     74         mFormText.setImage("android_img", androidLogo); //$NON-NLS-1$
     75 
     76         // Listener for default actions (page change, URL web browser)
     77         mFormText.addHyperlinkListener(editor.createHyperlinkListener());
     78 
     79         mFormText.addHyperlinkListener(new IHyperlinkListener() {
     80             @Override
     81             public void linkExited(HyperlinkEvent e) {
     82                 // pass
     83             }
     84 
     85             @Override
     86             public void linkEntered(HyperlinkEvent e) {
     87                 // pass
     88             }
     89 
     90             @Override
     91             public void linkActivated(HyperlinkEvent e) {
     92                 String link = e.data.toString();
     93                 if ("action_dosomething".equals(link)) {
     94                     MessageBox mb = new MessageBox(table.getShell(), SWT.OK);
     95                     mb.setText("Custom Action Invoked");
     96                     mb.open();
     97                 }
     98             }
     99         });
    100     }
    101 
    102     /**
    103      * Called after all pages have been created, to let the parts initialize their
    104      * content based on the document's model.
    105      * <p/>
    106      * The model should be acceded via the {@link ExportEditor}.
    107      *
    108      * @param editor The {@link ExportEditor} instance.
    109      */
    110     public void onModelInit(ExportEditor editor) {
    111         // pass
    112     }
    113 
    114     /**
    115      * Called after the document model has been changed. The model should be acceded via
    116      * the {@link ExportEditor} (e.g. getDocument, wrapRewriteSession)
    117      *
    118      * @param editor The {@link ExportEditor} instance.
    119      * @param event Specification of changes applied to document.
    120      */
    121     public void onModelChanged(ExportEditor editor, DocumentEvent event) {
    122         // pass
    123     }
    124 }
    125