示例#1
0
    public GraphemeClustersRow(BeanCatalog.Property prop, Object obj, final Refreshable refresh) {
      super(prop, obj);
      _view = (View) obj;

      JPanel btnpanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
      _undefineButton =
          new WButton(
              new WordCorrAction("btnGraphemeClusterUndefine", "accGraphemeClusterUndefine") {
                public void actionPerformed(ActionEvent evt) {
                  if (doUndefineGraphemeCluster()) {
                    try {
                      // update list
                      setValue(_view.getGraphemeClusters());
                    } catch (DatabaseException ex) {
                      ex.printStackTrace();
                    }
                  }
                }
              });
      btnpanel.add(_undefineButton, BorderLayout.NORTH);

      JPanel panel = new JPanel(new BorderLayout());
      panel.add(_text, BorderLayout.NORTH);
      panel.add(btnpanel, BorderLayout.CENTER);
      init(panel, _text);
      _text.setFont(FontCache.getIPA());
    }
示例#2
0
 /** Constructor. */
 public ViewsUndefineGraphemeClusterRow(
     BeanCatalog.Property prop, Object obj, Refreshable refresh) {
   super(prop, obj);
   _data = (UndefineGraphemeClusterTask) obj;
   _refresh = refresh;
   init(_combo, _combo);
   _combo.setFont(FontCache.getIPA());
   refresh();
 }
  static Bitmap[] smartNotify(Context context, Bitmap icon, String header, String body) {

    Properties props = BitmapCache.getProperties(context, "notification_sticky.xml");

    final int textTop = Integer.parseInt(props.getProperty("textTop", "24"));
    final int textLeft = Integer.parseInt(props.getProperty("textLeft", "3"));
    final int textWidth = Integer.parseInt(props.getProperty("textWidth", "85"));
    final int textHeight = Integer.parseInt(props.getProperty("textHeight", "69"));

    final int iconTop = Integer.parseInt(props.getProperty("iconTop", "0"));
    final int iconLeft = Integer.parseInt(props.getProperty("iconLeft", "0"));

    final int headerLeft = Integer.parseInt(props.getProperty("headerLeft", "20"));
    final int headerBaseline = Integer.parseInt(props.getProperty("headerBaseline", "15"));

    final int headerColor =
        props.getProperty("headerColor", "white").equalsIgnoreCase("black")
            ? Color.BLACK
            : Color.WHITE;
    final int textColor =
        props.getProperty("textColor", "black").equalsIgnoreCase("black")
            ? Color.BLACK
            : Color.WHITE;

    final int arrowUpLeft = Integer.parseInt(props.getProperty("arrowUpLeft", "91"));
    final int arrowUpTop = Integer.parseInt(props.getProperty("arrowUpTop", "23"));

    final int arrowDownLeft = Integer.parseInt(props.getProperty("arrowDownLeft", "91"));
    final int arrowDownTop = Integer.parseInt(props.getProperty("arrowDownTop", "56"));

    final int closeLeft = Integer.parseInt(props.getProperty("closeLeft", "91"));
    final int closeTop = Integer.parseInt(props.getProperty("closeTop", "89"));

    FontInfo font = FontCache.instance(context).Get();

    List<Bitmap> bitmaps = new ArrayList<Bitmap>();

    Paint paintHead = new Paint();
    paintHead.setColor(headerColor);
    paintHead.setTextSize(FontCache.instance(context).Large.size);
    paintHead.setTypeface(FontCache.instance(context).Large.face);

    Paint paint = new Paint();
    paint.setColor(textColor);
    paint.setTextSize(font.size);
    paint.setTypeface(font.face);

    Paint whitePaint = new Paint();
    whitePaint.setColor(Color.WHITE);

    TextPaint textPaint = new TextPaint(paint);
    StaticLayout staticLayout =
        new StaticLayout(
            body, textPaint, textWidth, android.text.Layout.Alignment.ALIGN_NORMAL, 1.0f, 0, false);

    int iconHeight = 16;
    int iconOffset = 0;
    if (icon != null) {
      iconHeight = Math.max(16, icon.getHeight());
      iconOffset = iconHeight - icon.getHeight(); // align icon to bottom of text
    }

    int h = staticLayout.getHeight();
    int y = 0;
    int displayHeight = textHeight + 3;

    int scroll = textHeight - font.size;
    boolean more = true;

    int pages = 0;

    while (more) {
      more = false;
      Bitmap bitmap = Bitmap.createBitmap(96, 96, Bitmap.Config.RGB_565);
      Canvas canvas = new Canvas(bitmap);

      canvas.drawColor(Color.WHITE);

      canvas.drawBitmap(Utils.getBitmap(context, "notify_background_sticky.png"), 0, 0, null);

      canvas.save();
      canvas.translate(textLeft, textTop - y); // position the text
      canvas.clipRect(0, y, textWidth, textHeight + y);
      staticLayout.draw(canvas);
      canvas.restore();

      // Draw header
      if (icon != null) canvas.drawBitmap(icon, iconLeft, iconOffset + iconTop, paint);
      canvas.drawText(header, headerLeft, headerBaseline, paintHead);

      if (y > 0)
        canvas.drawBitmap(Utils.getBitmap(context, "arrow_up.bmp"), arrowUpLeft, arrowUpTop, null);

      if ((h - y) > (displayHeight) && pages < 10) {
        more = true;
        pages++;
        canvas.drawBitmap(
            Utils.getBitmap(context, "arrow_down.bmp"), arrowDownLeft, arrowDownTop, null);
      }

      canvas.drawBitmap(Utils.getBitmap(context, "close.bmp"), closeLeft, closeTop, null);

      y += scroll;
      bitmaps.add(bitmap);
    }

    Bitmap[] bitmapArray = new Bitmap[bitmaps.size()];
    bitmaps.toArray(bitmapArray);
    return bitmapArray;
  }
  static Bitmap smartLines(
      Context context, Bitmap icon, String header, String[] lines, FontCache.FontSize size) {

    Properties props = BitmapCache.getProperties(context, "notification.xml");

    final int textTop = Integer.parseInt(props.getProperty("textTop", "24"));
    final int textLeft = Integer.parseInt(props.getProperty("textLeft", "3"));
    final int textWidth = Integer.parseInt(props.getProperty("textWidth", "90"));
    final int textHeight = Integer.parseInt(props.getProperty("textHeight", "69"));

    final int iconTop = Integer.parseInt(props.getProperty("iconTop", "0"));
    final int iconLeft = Integer.parseInt(props.getProperty("iconLeft", "0"));

    final int headerLeft = Integer.parseInt(props.getProperty("headerLeft", "20"));
    final int headerBaseline = Integer.parseInt(props.getProperty("headerBaseline", "15"));

    final int headerColor =
        props.getProperty("headerColor", "white").equalsIgnoreCase("black")
            ? Color.BLACK
            : Color.WHITE;
    final int textColor =
        props.getProperty("textColor", "black").equalsIgnoreCase("black")
            ? Color.BLACK
            : Color.WHITE;

    FontInfo font = FontCache.instance(context).Get(size);

    Bitmap bitmap = Bitmap.createBitmap(96, 96, Bitmap.Config.RGB_565);
    Canvas canvas = new Canvas(bitmap);

    Paint paintHead = new Paint();
    paintHead.setColor(headerColor);
    paintHead.setTextSize(FontCache.instance(context).Large.size);
    paintHead.setTypeface(FontCache.instance(context).Large.face);

    Paint paint = new Paint();
    paint.setColor(textColor);
    paint.setTextSize(font.size);
    paint.setTypeface(font.face);

    canvas.drawColor(Color.WHITE);

    canvas.drawBitmap(Utils.getBitmap(context, "notify_background.png"), 0, 0, null);

    int iconHeight = 16;
    if (icon != null) {
      iconHeight = Math.max(16, icon.getHeight()); // make sure the text fits

      // align icon to bottom of text
      canvas.drawBitmap(icon, iconLeft, iconTop + iconHeight - icon.getHeight(), paint);
    }

    canvas.drawText(header, headerLeft, headerBaseline, paintHead);

    String body = "";
    for (String line : lines) {
      if (body.length() > 0) body += "\n\n";
      body += line;
    }

    TextPaint textPaint = new TextPaint(paint);
    StaticLayout staticLayout =
        new StaticLayout(
            body, textPaint, textWidth, android.text.Layout.Alignment.ALIGN_CENTER, 1.3f, 0, false);

    int layoutHeight = staticLayout.getHeight();
    int textY = textTop + (textHeight / 2) - (layoutHeight / 2);
    if (textY < textTop) textY = textTop;

    canvas.translate(textLeft, textY); // position the text
    staticLayout.draw(canvas);

    return bitmap;
  }
/** @author Eugene Stahov */
public class ComplexString extends Vector implements VirtualElement {

  // private Vector v;
  public static final int IMAGE = 0x00000000;
  public static final int COLOR = 0x01000000;
  public static final int RALIGN = 0x02000000;
  public static final int UNDERLINE = 0x03000000;
  // #if NICK_COLORS
  // #     public final static int NICK_ON   = 0x04000000;
  // #     public final static int NICK_OFF  = 0x05000000;
  // #endif

  protected Font font = FontCache.getMsgFont();
  private int height;
  private int width;
  private ImageList imageList;
  private int colorBGnd = ColorScheme.LIST_BGND;
  private int color = ColorScheme.LIST_INK;

  /** Creates a new instance of ComplexString */
  public ComplexString() {
    super();
  }

  /** Creates a new instance of ComplexString */
  public ComplexString(ImageList imageList) {
    this();
    this.imageList = imageList;
  }

  private int imgHeight() {
    return (imageList == null) ? 0 : imageList.getHeight();
  }

  private int imgWidth() {
    return (imageList == null) ? 0 : imageList.getWidth();
  }

  public int getColor() {
    return color;
  }

  public int getColorBGnd() {
    return colorBGnd;
  }

  public void setColorBGnd(int color) {
    colorBGnd = color;
  }

  public void setColor(int color) {
    this.color = color;
  }

  public void onSelect() {};

  public void drawItem(Graphics g, int offset, boolean selected, boolean drawsec) {
    // g.setColor(0);
    boolean ralign = false;
    boolean underline = false;

    // #if NICK_COLORS
    // # 	boolean nick=false;
    // #endif

    int w = offset;
    int dw;
    int imageYOfs = ((getVHeight() - imgHeight()) >> 1);
    // #if ALCATEL_FONT
    // #         int fontYOfs=(( getVHeight()-font.getHeight() )>>1) +1;
    // #else
    int fontYOfs = ((getVHeight() - font.getHeight()) >> 1);
    // #endif
    int imgWidth = imgWidth();

    g.setFont(font);
    for (int index = 0; index < elementCount; index++) {
      Object ob = elementData[index];
      if (ob != null) {

        if (ob instanceof String) {
          // string element
          String s = (String) ob;
          // #if NICK_COLORS
          // #                     if (nick) {
          // #                         int color=g.getColor();
          // #                         dw=0;
          // #                         int p1=0;
          // #                         while (p1<s.length()) {
          // #                             int p2=p1;
          // #                             char c1=s.charAt(p1);
          // #                             //processing the same cp
          // #                             while (p2<s.length()) {
          // #                                 char c2=s.charAt(p2);
          // #                                 if ( (c1&0xff00) != (c2 &0xff00) ) break;
          // #                                 p2++;
          // #                             }
          // #                             g.setColor( (c1>255) ? ColorScheme.strong(color) :
          // color);
          // #                             dw=font.substringWidth(s, p1, p2-p1);
          // #                             if (ralign) w-=dw;
          // #                             g.drawSubstring( s, p1, p2-p1,
          // #                                     w,fontYOfs,Graphics.LEFT|Graphics.TOP);
          // #                             if (!ralign) w+=dw;
          // #                             p1=p2;
          // #                         }
          // #
          // #                         g.setColor(color);
          // #                     } else {
          // #endif
          dw = font.stringWidth(s);
          if (ralign) w -= dw;
          g.drawString(s, w, fontYOfs, Graphics.LEFT | Graphics.TOP);
          if (underline) {
            int y = getVHeight() - 1;
            g.drawLine(w, y, w + dw, y);
            underline = false;
          }
          if (!ralign) w += dw;
          // #if NICK_COLORS
          // #                     }
          // #endif

        } else if ((ob instanceof Integer)) {
          // image element or color
          int i = ((Integer) ob).intValue();
          switch (i & 0xff000000) {
            case IMAGE:
              if (imageList == null) break;
              if (ralign) w -= imgWidth;
              imageList.drawImage(g, ((Integer) ob).intValue(), w, imageYOfs);
              if (!ralign) w += imgWidth;
              break;
            case COLOR:
              g.setColor(0xFFFFFF & i);
              break;
            case RALIGN:
              ralign = true;
              w = g.getClipWidth() - 1;
              break;
            case UNDERLINE:
              underline = true;
              break;
              // #if NICK_COLORS
              // #                         case NICK_ON:
              // #                             nick=true;
              // #                             break;
              // #                         case NICK_OFF:
              // #                             nick=false;
              // #                             break;
              // #endif
          }
        } /* Integer*/ else if (ob instanceof VirtualElement) {
          int clipw = g.getClipWidth();
          int cliph = g.getClipHeight();
          ((VirtualElement) ob).drawItem(g, 0, false, false);
          g.setClip(g.getTranslateX(), g.getTranslateY(), clipw, cliph);
          // TODO: рисование не с нулевой позиции и вычисление ширины
        }
      } // if ob!=null
    } // for
  }

  public int getVWidth() {
    // g.setColor(0);
    if (width > 0) return width; // cached

    int w = 0;
    int imgWidth = imgWidth();

    for (int index = 0; index < elementCount; index++) {
      Object ob = elementData[index];
      if (ob != null) {

        if (ob instanceof String) {
          // string element
          w += font.stringWidth((String) ob);
        } else if ((ob instanceof Integer) && imageList != null) {
          // image element or color
          int i = (((Integer) ob).intValue());
          switch (i & 0xff000000) {
            case IMAGE:
              w += imgWidth;
              break;
          }
        } // Integer
      } // if ob!=null
    } // for
    return width = w;
  }

  /*public Object elementAt(int index) {
      if (index<elementCount) return super.elementAt(index);
      return null;
  }*/

  /**
   * Safe version of setElementAt Sets the component at the specified index of this vector to be the
   * specified object. The previous component at that position is discarded. If index is greater or
   * equal to the current size of the vector, size will be automatically enlarged
   *
   * @param obj
   * @param index
   */
  public void setElementAt(Object obj, int index) {
    height = width = 0; // discarding cached values
    if (index >= elementCount) this.setSize(index + 1);
    super.setElementAt(obj, index);
  }

  public int getVHeight() {
    if (height != 0) return height;
    for (int i = 0; i < elementCount; i++) {
      int h = 0;
      Object o = elementData[i];
      if (o == null) continue;
      if (o instanceof String) {
        h = font.getHeight();
      } else if (o instanceof Integer) {
        int a = ((Integer) o).intValue();
        if ((a & 0xff000000) == 0) {
          h = imageList.getWidth();
        }
      } else if (o instanceof VirtualElement) {
        h = ((VirtualElement) o).getVHeight();
      }
      if (h > height) height = h;
    }
    return height;
  }

  public void addElement(Object obj) {
    height = width = 0; // discarding cached values
    super.addElement(obj);
  }

  public void addImage(int imageIndex) {
    addElement(new Integer(imageIndex));
  }

  public void addColor(int colorRGB) {
    addElement(new Integer(COLOR | colorRGB));
  }

  public void addRAlign() {
    addElement(new Integer(RALIGN));
  }

  public void addUnderline() {
    addElement(new Integer(UNDERLINE));
  }

  public Font getFont() {
    return font;
  }

  public void setFont(Font font) {
    this.font = font;
  }

  public String getTipString() {
    return null;
  }

  public String getSecondString() {
    return null;
  }
}
 /**
  * Creates and returns a stylesheet builder configured with some useful default styles. The caller
  * can augment the sheet with additional styles and call {@code create}.
  */
 public static Stylesheet.Builder newSheetBuilder(Graphics gfx) {
   final Font font = FontCache.instance().REGULAR;
   int bgColor = 0xFFCCCCCC, ulColor = UL_COLOR, brColor = 0xFFAAAAAA;
   Background butBg = Background.roundRect(gfx, bgColor, 5, ulColor, 2).inset(5, 6, 2, 6);
   Background butSelBg = Background.roundRect(gfx, bgColor, 5, brColor, 2).inset(6, 5, 1, 7);
   Background disabledChangeViewButtonBackground =
       Background.roundRect(gfx, Palette.DIALOG_BACKGROUND, 5, ulColor, 2).inset(5, 6, 2, 6);
   return Stylesheet.builder()
       .add(Button.class, Style.BACKGROUND.is(butBg), Style.FONT.is(font))
       .add(Button.class, Style.Mode.SELECTED, Style.BACKGROUND.is(butSelBg))
       .add(Button.class, Style.ACTION_SOUND.is(SfxCache.instance().CLICK))
       .add(ToggleButton.class, Style.BACKGROUND.is(butBg))
       .add(ToggleButton.class, Style.Mode.SELECTED, Style.BACKGROUND.is(butSelBg))
       .add(
           CheckBox.class,
           Style.BACKGROUND.is(
               Background.roundRect(gfx, bgColor, 5, ulColor, 2).inset(3, 2, 0, 3)))
       .add(
           CheckBox.class,
           Style.Mode.SELECTED,
           Style.BACKGROUND.is(
               Background.roundRect(gfx, bgColor, 5, brColor, 2).inset(3, 2, 0, 3)))
       // flip ul and br to make Field appear recessed
       .add(
           Field.class,
           Style.BACKGROUND.is(Background.beveled(0xFFFFFFFF, brColor, ulColor).inset(5)),
           Style.HALIGN.left)
       .add(
           Field.class,
           Style.Mode.DISABLED,
           Style.BACKGROUND.is(Background.beveled(0xFFCCCCCC, brColor, ulColor).inset(5)))
       .add(
           Menu.class,
           Style.BACKGROUND.is(Background.bordered(0xFFFFFFFF, 0x00000000, 1).inset(6)))
       .add(
           MenuItem.class,
           Style.BACKGROUND.is(Background.solid(0xFFFFFFFF)),
           Style.HALIGN.left,
           Style.FONT.is(font))
       .add(
           MenuItem.class,
           Style.Mode.SELECTED,
           Style.BACKGROUND.is(Background.solid(0xFF000000)),
           Style.COLOR.is(0xFFFFFFFF))
       .add(Tabs.class, Tabs.HIGHLIGHTER.is(Tabs.textColorHighlighter(0xFF000000, 0xFFFFFFFF)))
       .add(Label.class, Style.FONT.is(font))
       .add(
           GameInteractionArea.ChangeViewControl.ChangeViewButton.class,
           Style.BACKGROUND.is(butBg),
           Style.FONT.is(font))
       .add(
           GameInteractionArea.ChangeViewControl.ChangeViewButton.class,
           Style.Mode.SELECTED,
           Style.BACKGROUND.is(butSelBg))
       .add(
           GameInteractionArea.ChangeViewControl.ChangeViewButton.class,
           Style.Mode.DISABLED,
           Style.BACKGROUND.is(disabledChangeViewButtonBackground))
       .add(
           GameInteractionArea.ChangeViewControl.ChangeViewButton.class,
           Style.TEXT_EFFECT.pixelOutline)
       .add(
           GameInteractionArea.ChangeViewControl.ChangeViewButton.class,
           Style.HIGHLIGHT.is(Palette.UNUSED_SPACE))
       .add(
           GameInteractionArea.ChangeViewControl.ChangeViewButton.class,
           Style.COLOR.is(Palette.FOREGROUND))
       .add(
           GameInteractionArea.ChangeViewControl.ChangeViewButton.class,
           Style.ACTION_SOUND.is(SfxCache.instance().CLICK))
       .add(
           GameInteractionArea.ChangeViewControl.CountLabel.class,
           Style.FONT.is(font.derive(font.size * 0.85f)),
           Style.COLOR.is(GameColors.WHITE),
           Style.TEXT_EFFECT.pixelOutline,
           Style.HIGHLIGHT.is(GameColors.HUNTER_GREEN));
 }
示例#7
0
 private void setStyle(Context context) {
   setTypeface(FontCache.get("mm3.ttf", context));
 }
 private void init(AttributeSet attrs) {
   if (IS_CUSTOM_FONT_ALLOWED) {
     Typeface myTypeface = FontCache.get(getFontName(), getContext());
     setTypeface(myTypeface);
   }
 }