Home | History | Annotate | Download | only in gle1
      1 /*
      2  * Copyright (C) 2008 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.layout.gle1;
     18 
     19 import com.android.ide.eclipse.adt.internal.editors.descriptors.ElementDescriptor;
     20 import com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData;
     21 
     22 import org.eclipse.gef.palette.PaletteDrawer;
     23 import org.eclipse.gef.palette.PaletteGroup;
     24 import org.eclipse.gef.palette.PaletteRoot;
     25 import org.eclipse.gef.palette.PaletteTemplateEntry;
     26 
     27 import java.util.List;
     28 
     29 /**
     30  * Factory that creates the palette for the {@link GraphicalLayoutEditor}.
     31  *
     32  * @since GLE1
     33  */
     34 public class PaletteFactory {
     35 
     36     /** Static factory, nothing to instantiate here. */
     37     private PaletteFactory() {
     38     }
     39 
     40     public static PaletteRoot createPaletteRoot(PaletteRoot currentPalette,
     41             AndroidTargetData targetData) {
     42 
     43         if (currentPalette == null) {
     44             currentPalette = new PaletteRoot();
     45         }
     46 
     47         for (int n = currentPalette.getChildren().size() - 1; n >= 0; n--) {
     48             currentPalette.getChildren().remove(n);
     49         }
     50 
     51         if (targetData != null) {
     52             addTools(currentPalette);
     53             addViews(currentPalette, "Layouts",
     54                     targetData.getLayoutDescriptors().getLayoutDescriptors());
     55             addViews(currentPalette, "Views",
     56                     targetData.getLayoutDescriptors().getViewDescriptors());
     57         }
     58 
     59         return currentPalette;
     60     }
     61 
     62     private static void addTools(PaletteRoot paletteRoot) {
     63         PaletteGroup group = new PaletteGroup("Tools");
     64 
     65         // Default tools: selection.
     66         // Do not use the MarqueeToolEntry since we don't support multiple selection.
     67         /* -- Do not put the selection tool. It's the unique tool so it looks useless.
     68               Leave this piece of code here in case we want it back later.
     69         PanningSelectionToolEntry entry = new PanningSelectionToolEntry();
     70         group.add(entry);
     71         paletteRoot.setDefaultEntry(entry);
     72         */
     73 
     74         paletteRoot.add(group);
     75     }
     76 
     77     private static void addViews(PaletteRoot paletteRoot, String groupName,
     78             List<ElementDescriptor> descriptors) {
     79         PaletteDrawer group = new PaletteDrawer(groupName);
     80 
     81         for (ElementDescriptor desc : descriptors) {
     82             PaletteTemplateEntry entry = new PaletteTemplateEntry(
     83                     desc.getUiName(),           // label
     84                     desc.getTooltip(),          // short description
     85                     desc,                       // template
     86                     desc.getImageDescriptor(),  // small icon
     87                     desc.getImageDescriptor()   // large icon
     88                     );
     89 
     90             group.add(entry);
     91         }
     92 
     93         paletteRoot.add(group);
     94     }
     95 }
     96