Couldn't draw a custom UI in PF_Window_LAYER

Now im developing a custom UI plugin.
I would like to draw a red circle or green rectangle in a layer window as a custom control for manipulation of my objects.
There is no problem to draw a custom UI in a composition window (w_type == PF_Window_COMP)
But I failed to draw a custom UI in a layer window (w_type == PF_Window_LAYER).
At ParamsSetup(), I have set PF_CustomEFlag_LAYER to ci.events.
Coordinate transforms work well (I believe).
It just seems to fail to catch a PF_Event_DRAW.
Why ?
I've tested the simple custom UI example, 'CCU' plugin which is included in a AESDK(CS3).
CCU plugin also seemed to fail to draw a custom UI in a layer window.
AE CS3 and AE SDK CS3.
Visual Studio 2005 Pro
Win XP SP3 32bit

hi dfurusaka.
as far as i know it's a bug in cs3 and cs4, which was fixed in cs5.
checkout some other plug-ins that have a custom UI, like "meshwarp" or "vector paint". they too don't draw in the layer window on cs3 and cs4.
if i recall correctly (it was a long time ago), i looked into it and saw that the plug-ins do get a call to render, but the buffer they return is simply ignored by AE.
i never tried to solve this problem, so i can't tell you if there's a workaround, or it's just something you have to accept.
well, at least you know it works in cs5...

Similar Messages

  • Draw custom selection frame(dashed rectangle), while mouse dragging is moving

    Hi All,
    Maybe anyone has experience of drawing custom selection frame(dashed rectangle) for selected page items.
    I have to draw a custom selection frame(dashed rectangle), when I drag mouse cursor, while left mouse button is pressed.
    Thank you!
    Regards.

    There are two possible answers:
    1. If you use the getGraphics() in your event dispatching code, then the rectangle disappears because the component you paint on gets repainted, and it has no idea about your rectangle it should paint. The painting routine should ALWAYS be written in paintComponent(Graphics gr) method. (I wish they made the getGraphics() method protected).
    2. If you paint it in the write way, it might disappear because the components that it overlaps might cover it.
    Now a fix:
    Because you need to paint on TOP of everything in the JPanel, you can either:
    1. The dirty way: overwrite the paint(Graphics gr) method of your JPanel, first call super.paint(gr) then paint the rectangle.
    2. A proper way: Add a non-opaque JPanel on top of you JLayeredPane (similar to GlassPane), and paint the rectangle on it (in it's paintComponent method).
    Regards,
    Marcin
    You're probably doing some getGraphics() drawing which is usually wrong. If a component gets repainted by the system it loses all the information
    Now to the question:
    Your rectangle disappears beacause the Components that are overlapping it

  • Custom graphics in java.awt.ScrollPane

    Hi all,
    I have to draw a custom created image in a scroll pane. As the image is very large I want to display it in a scroll pane. As parts of the image may change within seconds, and drawing the whole image is very time consuming (several seconds) I want to draw only the part of the image that is currently visible to the user.
    My idea: creating a new class that extends from java.awt.ScrollPane, overwrite the paint(Graphics) method and do the drawings inside. Unfortunately, it does not work. The background of the scoll pane is blue, but it does not show the red box (the current viewport is not shown in red).
    Below please find the source code that I am using:
    package graphics;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.ScrollPane;
    import java.awt.event.AdjustmentEvent;
    public class CMyComponent extends ScrollPane {
         /** <p>Listener to force a component to repaint when a scroll bar changes its
          * position.</p>
         private final class ScrollBarAdjustmentListener implements java.awt.event.AdjustmentListener {
              /** <p>The component to force to repaint.</p> */
              private final Component m_Target;
              /** <p>Default constructor.</p>
               * @param Target The component to force to repaint.
              private ScrollBarAdjustmentListener(Component Target) { m_Target = Target; }
              /** <p>Forces to component to repaint upon adjustment of the scroll bar.</p>
               *  @see java.awt.event.AdjustmentListener#adjustmentValueChanged(java.awt.event.AdjustmentEvent)
              public void adjustmentValueChanged(AdjustmentEvent e) { m_Target.paint(m_Target.getGraphics()); }
         public CMyComponent() {
              // Ensure that the component repaints upon changing of the scroll bars
              ScrollBarAdjustmentListener sbal = new ScrollBarAdjustmentListener(this);
              getHAdjustable().addAdjustmentListener(sbal);
              getVAdjustable().addAdjustmentListener(sbal);
         public void paint(Graphics g) {
              setBackground(Color.BLUE);
              g.setColor(Color.RED);
              g.fillRect(getScrollPosition().x, getScrollPosition().y, getViewportSize().width, getViewportSize().height);
         public final static void main(String[] args) {
              java.awt.Frame f = new java.awt.Frame();
              f.add(new CMyComponent());
              f.pack();
              f.setVisible(true);
    }

    Dear all,
    I used the last days and tried several things. I think now I have a quite good working solution (just one bug remains) and it is very performant. To give others a chance to see what I have done I post the source code of the main class (a canvas drawing and implementing scrolling) here. As soon as the sourceforge project is accepted, I will publish the whole sources at there. Enjoy. And if you have some idea for my last bug in getElementAtPixel(Point), then please tell me.
    package internetrail.graphics.hexgrid;
    import java.awt.Canvas;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.Point;
    import java.awt.Polygon;
    import java.awt.event.ComponentEvent;
    import java.awt.event.ComponentListener;
    import java.awt.geom.Area;
    import java.awt.image.BufferedImage;
    import java.util.WeakHashMap;
    import java.util.Map;
    /** <p>Hex grid view.</p>
    * <p>Visualizes a {@link IHexGridModel}.</p>
    * @version 0.1, 03.06.2006
    * @author Bjoern Wuest, Germany
    public final class CHexGridView extends Canvas implements ComponentListener, IHexGridElementListener {
         /** <p>Serial version unique identifier.</p> */
         private static final long serialVersionUID = -965902826101261530L;
         /** <p>Instance-constant parameter for the width of a hex grid element.</p> */
         public final int CONST_Width;
         /** <p>Instance-constant parameter for 1/4 of the width of a hex grid element.</p> */
         public final int CONST_Width1fourth;
         /** <p>Instance-constant parameter for 3/4 of the width of a hex grid element.</p> */
         public final int CONST_Width3fourth;
         /** <p>Instance-constant parameter for 1.5 times of the width of a hex grid element.</p> */
         public final int CONST_Width1dot5;
         /** <p>Instance-constant parameter for 4 times of the width of a hex grid element.</p> */
         public final int CONST_Widthquad;
         /** <p>Instance-constant parameter for the height of a hex grid element.</p> */
         public final int CONST_Height;
         /** <p>Instance-constant parameter for 1/2 of the height of a hex grid element.</p> */
         public final int CONST_Heighthalf;
         /** <p>Instance-constant parameter for the double height of a hex grid element.</p> */
         public final int CONST_Heightdouble;
         /** <p>The steepness of a side of the hex grid element (calculated for the upper left arc).</p> */
         public final double CONST_Steepness;
         /** <p>The model of this hex grid </p> */
         private final IHexGridModel m_Model;
         /** <p>A cache for already created images of the hex map.</p> */
         private final Map<Point, Image> m_Cache = new WeakHashMap<Point, Image>();
         /** <p>The graphical area to draw the selection ring around a hex element.</p> */
         private final Area m_SelectionRing;
         /** <p>The image of the selection ring around a hex element.</p> */
         private final BufferedImage m_SelectionRingImage;
         /** <p>The current position of the hex grid in pixels (top left visible corner).</p> */
         private Point m_ScrollPosition = new Point(0, 0);
         /** <p>Flag to define if a grid is shown ({@code true}) or not ({@code false}).</p> */
         private boolean m_ShowGrid = true;
         /** <p>Flag to define if the selected hex grid element should be highlighted ({@code true}) or not ({@code false}).</p> */
         private boolean m_ShowSelected = true;
         /** <p>The offset of hex grid elements shown on the screen, measured in hex grid elements.</p> */
         private Point m_CurrentOffset = new Point(0, 0);
         /** <p>The offset of the image shown on the screen, measured in pixels.</p> */
         private Point m_PixelOffset = new Point(0, 0);
         /** <p>The index of the currently selected hex grid element.</p> */
         private Point m_CurrentSelected = new Point(0, 0);
         /** <p>The width of a buffered pre-calculated image in pixel.</p> */
         private int m_ImageWidth;
         /** <p>The height of a buffered pre-calculated image in pixel.</p> */
         private int m_ImageHeight;
         /** <p>The maximum number of columns of hex grid elements to be shown at once on the screen.</p> */
         private int m_MaxColumn;
         /** <p>The maximum number of rows of hex grid elements to be shown at once on the screen.</p> */
         private int m_MaxRow;
         /** <p>Create a new hex grid view.</p>
          * <p>The hex grid view is bound to a {@link IHexGridModel} and registers at
          * that model to listen for {@link IHexGridElement} updates.</p>
          * @param Model The model backing this view.
         public CHexGridView(IHexGridModel Model) {
              // Set the model
              m_Model = Model;
              CONST_Width = m_Model.getElementsWidth();
              CONST_Height = m_Model.getElementsHeight();
              CONST_Width1fourth = CONST_Width/4;
              CONST_Width3fourth = CONST_Width*3/4;
              CONST_Width1dot5 = CONST_Width*3/2;
              CONST_Heighthalf = CONST_Height/2;
              CONST_Widthquad = CONST_Width*4;
              CONST_Heightdouble = CONST_Height*2;
              CONST_Steepness = (double)CONST_Heighthalf / CONST_Width1fourth;
              m_ImageWidth = getSize().width+CONST_Widthquad;
              m_ImageHeight = getSize().height+CONST_Heightdouble;
              m_MaxColumn = m_ImageWidth / CONST_Width3fourth;
              m_MaxRow = m_ImageHeight / CONST_Height;
              // Register this canvas for various notifications
              m_Model.addElementListener(this);
              addComponentListener(this);
              // Create the selection ring to highlight hex grid elements
              m_SelectionRing = new Area(new Polygon(new int[]{-1, CONST_Width1fourth-1, CONST_Width3fourth+1, CONST_Width+1, CONST_Width3fourth+1, CONST_Width1fourth-1}, new int[]{CONST_Heighthalf, -1, -1, CONST_Heighthalf, CONST_Height+1, CONST_Height+1}, 6));
              m_SelectionRing.subtract(new Area(new Polygon(new int[]{2, CONST_Width1fourth+2, CONST_Width3fourth-2, CONST_Width-2, CONST_Width3fourth-2, CONST_Width1fourth+2}, new int[]{CONST_Heighthalf, 2, 2, CONST_Heighthalf, CONST_Height-2, CONST_Height-2}, 6)));
              m_SelectionRingImage = new BufferedImage(CONST_Width, CONST_Height, BufferedImage.TYPE_INT_ARGB);
              Graphics2D g = m_SelectionRingImage.createGraphics();
              g.setColor(Color.WHITE);
              g.fill(m_SelectionRing);
         @Override public synchronized void paint(Graphics g2) {
              // Caculate the offset of indexes to show
              int offsetX = 2 * (m_ScrollPosition.x / CONST_Width1dot5) - 2;
              int offsetY = (int)(Math.ceil(m_ScrollPosition.y / CONST_Height) - 1);
              m_CurrentOffset = new Point(offsetX, offsetY);
              // Check if the image is in the cache
              Image drawing = m_Cache.get(m_CurrentOffset);
              if (drawing == null) {
                   // The image is not cached, so draw it
                   drawing = new BufferedImage(m_ImageWidth, m_ImageHeight, BufferedImage.TYPE_INT_ARGB);
                   Graphics2D g = ((BufferedImage)drawing).createGraphics();
                   // Draw background
                   g.setColor(Color.BLACK);
                   g.fillRect(0, 0, m_ImageWidth, m_ImageHeight);
                   // Draw the hex grid
                   for (int column = 0; column <= m_MaxColumn; column += 2) {
                        for (int row = 0; row <= m_MaxRow; row++) {
                             // Draw even column
                             IHexGridElement element = m_Model.getElementAt(offsetX + column, offsetY + row);
                             if (element != null) { g.drawImage(element.getImage(m_ShowGrid), (int)(column*(CONST_Width3fourth-0.5)), CONST_Height*row, null); }
                             // Draw odd column
                             element = m_Model.getElementAt(offsetX + column+1, offsetY + row);
                             if (element!= null) { g.drawImage(element.getImage(m_ShowGrid), (int)(column*(CONST_Width3fourth-0.5)+CONST_Width3fourth), CONST_Heighthalf*(row*2+1), null); }
                   // Put the image into the cache
                   m_Cache.put(m_CurrentOffset, drawing);
              // Calculate the position of the image to show
              offsetX = CONST_Width1dot5 + (m_ScrollPosition.x % CONST_Width1dot5);
              offsetY = CONST_Height + (m_ScrollPosition.y % CONST_Height);
              m_PixelOffset = new Point(offsetX, offsetY);
              g2.drawImage(drawing, -offsetX, -offsetY, null);
              // If the selected element should he highlighted, then do so
              if (m_ShowSelected) {
                   // Check if the selected element is on screen
                   if (isElementOnScreen(m_CurrentSelected)) {
                        // Correct vertical offset for odd columns
                        if ((m_CurrentSelected.x % 2 == 1)) { offsetY -= CONST_Heighthalf; }
                        // Draw the selection circle
                        g2.drawImage(m_SelectionRingImage, (m_CurrentSelected.x - m_CurrentOffset.x) * CONST_Width3fourth - offsetX - ((m_CurrentSelected.x + 1) / 2), (m_CurrentSelected.y - m_CurrentOffset.y) * CONST_Height - offsetY, null);
         @Override public synchronized void update(Graphics g) { paint(g); }
         public synchronized void componentResized(ComponentEvent e) {
              // Upon resizing of the component, adjust several pre-calculated values
              m_ImageWidth = getSize().width+CONST_Widthquad;
              m_ImageHeight = getSize().height+CONST_Heightdouble;
              m_MaxColumn = m_ImageWidth / CONST_Width3fourth;
              m_MaxRow = m_ImageHeight / CONST_Height;
              // And flush the cache
              m_Cache.clear();
         public void componentMoved(ComponentEvent e) { /* do nothing */ }
         public void componentShown(ComponentEvent e) { /* do nothing */ }
         public void componentHidden(ComponentEvent e) { /* do nothing */ }
         public synchronized void elementUpdated(IHexGridElement Element) {
              // Clear cache where the element may be contained at
              for (Point p : m_Cache.keySet()) { if (isElementInScope(Element.getIndex(), p, new Point(p.x + m_MaxColumn, p.y + m_MaxRow))) { m_Cache.remove(p); } }
              // Update the currently shown image if the update element is shown, too
              if (isElementOnScreen(Element.getIndex())) { repaint(); }
         /** <p>Returns the model visualized by this grid view.</p>
          * @return The model visualized by this grid view.
         public IHexGridModel getModel() { return m_Model; }
         /** <p>Returns the current selected hex grid element.</p>
          * @return The current selected hex grid element.
         public IHexGridElement getSelected() { return m_Model.getElementAt(m_CurrentSelected.x, m_CurrentSelected.y); }
         /** <p>Sets the current selected hex grid element by its index.</p>
          * <p>If the selected hex grid element should be highlighted and is currently
          * shown on the screen, then this method will {@link #repaint() redraw} this
          * component automatically.</p>
          * @param Index The index of the hex grid element to become the selected one.
          * @throws IllegalArgumentException If the index refers to a non-existing hex
          * grid element.
         public synchronized void setSelected(Point Index) throws IllegalArgumentException {
              // Check that the index is valid
              if ((Index.x < 0) || (Index.y < 0) || (Index.x > m_Model.getXElements()) || (Index.y > m_Model.getYElements())) { throw new IllegalArgumentException("There is no hex grid element with such index."); }
              m_CurrentSelected = Index;
              // If the element is on screen and should be highlighted, then repaint
              if (m_ShowSelected && isElementOnScreen(m_CurrentSelected)) { repaint(); }
         /** <p>Moves the visible elements to the left by the number of pixels.</p>
          * <p>To move the visible elements to the left by one hex grid element, pass
          * {@link #CONST_Width3fourth} as the parameter. The component will
          * automatically {@link #repaint()}.</p>
          * @param Pixels The number of pixels to move to the left.
          * @return The number of pixels moved to the left. This is always between 0
          * and {@code abs(Pixels)}.
         public synchronized int moveLeft(int Pixels) {
              int delta = m_ScrollPosition.x - Math.max(0, m_ScrollPosition.x - Math.max(0, Pixels));
              if (delta != 0) {
                   m_ScrollPosition.x -= delta;
                   repaint();
              return delta;
         /** <p>Moves the visible elements up by the number of pixels.</p>
          * <p>To move the visible elements up by one hex grid element, pass {@link
          * #CONST_Height} as the parameter. The component will automatically {@link
          * #repaint()}.</p>
          * @param Pixels The number of pixels to move up.
          * @return The number of pixels moved up. This is always between 0 and {@code
          * abs(Pixels)}.
         public synchronized int moveUp(int Pixels) {
              int delta = m_ScrollPosition.y - Math.max(0, m_ScrollPosition.y - Math.max(0, Pixels));
              if (delta != 0) {
                   m_ScrollPosition.y -= delta;
                   repaint();
              return delta;
         /** <p>Moves the visible elements to the right by the number of pixels.</p>
          * <p>To move the visible elements to the right by one hex grid element, pass
          * {@link #CONST_Width3fourth} as the parameter. The component will
          * automatically {@link #repaint()}.</p>
          * @param Pixels The number of pixels to move to the right.
          * @return The number of pixels moved to the right. This is always between 0
          * and {@code abs(Pixels)}.
         public synchronized int moveRight(int Pixels) {
              int delta = Math.min(m_Model.getXElements() * CONST_Width3fourth + CONST_Width1fourth - getSize().width, m_ScrollPosition.x + Math.max(0, Pixels)) - m_ScrollPosition.x;
              if (delta != 0) {
                   m_ScrollPosition.x += delta;
                   repaint();
              return delta;
         /** <p>Moves the visible elements down by the number of pixels.</p>
          * <p>To move the visible elements down by one hex grid element, pass {@link
          * #CONST_Height} as the parameter. The component will automatically {@link
          * #repaint()}.</p>
          * @param Pixels The number of pixels to move down.
          * @return The number of pixels moved down. This is always between 0 and
          * {@code abs(Pixels)}.
         public synchronized int moveDown(int Pixels) {
              int delta = Math.min(m_Model.getYElements() * CONST_Height + CONST_Heighthalf - getSize().height, m_ScrollPosition.y + Math.max(0, Pixels)) - m_ScrollPosition.y;
              if (delta != 0) {
                   m_ScrollPosition.y += delta;
                   repaint();
              return delta;
         /** <p>Checks if the hex grid element of the given index is currently
          * displayed on the screen (even just one pixel).</p>
          * <p>The intention of this method is to check if a {@link #repaint()} is
          * necessary or not.</p>
          * @param ElementIndex The index of the element to check.
          * @return {@code true} if the hex grid element of the given index is
          * displayed on the screen, {@code false} if not.
         public synchronized boolean isElementOnScreen(Point ElementIndex) { return isElementInScope(ElementIndex, m_CurrentOffset, new Point(m_CurrentOffset.x + m_MaxColumn, m_CurrentOffset.y + m_MaxRow)); }
         /** <p>Checks if the hex grid element of the given index is within the given
          * indexes.</p>
          * <p>The intention of this method is to check if a {@link #repaint()} is
          * necessary or not.</p>
          * @param ElementIndex The index of the element to check.
          * @param ReferenceIndexLeftTop The left top index of the area to check.
          * @param ReferenceIndexRightBottom The right bottom index of the area to check.
          * @return {@code true} if the hex grid element of the given index is within
          * the given area, {@code false} if not.
         public synchronized boolean isElementInScope(Point ElementIndex, Point ReferenceIndexLeftTop, Point ReferenceIndexRightBottom) { if ((ElementIndex.x >= ReferenceIndexLeftTop.x) && (ElementIndex.x <= ReferenceIndexRightBottom.x) && (ElementIndex.y >= ReferenceIndexLeftTop.y) && (ElementIndex.y <= (ReferenceIndexRightBottom.y))) { return true; } else { return false; } }
         /** <p>Return the {@link IHexGridElement hex grid element} shown at the given
          * pixel on the screen.</p>
          * <p><b>Remark: There seems to be a bug in retrieving the proper element,
          * propably caused by rounding errors and unprecise pixel calculations.</p>
          * @param P The pixel on the screen.
          * @return The {@link IHexGridElement hex grid element} shown at the pixel.
         public synchronized IHexGridElement getElementAtPixel(Point P) {
              // @FIXME Here seems to be some bugs remaining
              int dummy = 0; // Variable for warning to indicate that there is something to do :)
              // Calculate the pixel on the image, not on the screen
              int px = P.x + m_PixelOffset.x;
              int py = P.y + m_PixelOffset.y;
              // Determine the x-index of the column (is maybe decreased by one)
              int x = px / CONST_Width3fourth + m_CurrentOffset.x;
              // If the column is odd, then shift the y-pixel by half element height
              if ((x % 2) == 1) { py -= CONST_Heighthalf; }
              // Determine the y-index of the row (is maybe decreased by one)
              int y = py / CONST_Height + m_CurrentOffset.y;
              // Normative coordinates to a single element
              px -= (x - m_CurrentOffset.x) * CONST_Width3fourth;
              py -= (y - m_CurrentOffset.y) * CONST_Height;
              // Check if the normative pixel is in the first quarter of a column
              if (px < CONST_Width1fourth) {
                   // Adjustments to the index may be necessary
                   if (py < CONST_Heighthalf) {
                        // We are in the upper half of a hex-element
                        double ty = CONST_Heighthalf - CONST_Steepness * px;
                        if (py < ty) { x--; }
                   } else {
                        // We are in the lower half of a hex-element
                        double ty = CONST_Heighthalf + CONST_Steepness * px;
                        if (py > ty) {
                             x--;
                             y++;
              return m_Model.getElementAt(x, y);
    }Ah, just to give you some idea: I use this component to visualize a hex grid map with more than 1 million grid elements. And it works, really fast, and requires less than 10 MByte of memory.

  • Custom UI on Premiere problems.

    I've got some custom-UI problems on Premiere CS3:
    1) How do I get the ECP background colour, so I can clear a section to it?
    PF_AppGetColor() succeeds but doesn't actually return a colour for any of the colour types. (if Premiere at least cleared to the panel colour I'd be fine, but it clears to black - why?).
    2) How can I draw a custom UI without a topic? (many of Premiere's effects do this). PF_PUI_TOPIC doesn't seem to be supported.
    3) How can I dynamically resize my UI's rectangle, to scale it as the user adjusts the ECP width (like many of Premiere's effects do)?

    Hi
    Please refer to these links.
    http://help.sap.com/saphelp_srm50/helpdata/en/ca/37f813397db14bb99fd11ec70a18d0/frameset.htm
    http://help.sap.com/saphelp_srm50/helpdata/en/63/b0903c8d500b14e10000000a114084/frameset.htm
    http://help.sap.com/saphelp_srm50/helpdata/en/6d/0f343e47fd6b2ee10000000a114084/frameset.htm
    http://help.sap.com/saphelp_srm50/helpdata/en/0c/b91b3f7f9e3642e10000000a114084/frameset.htm
    http://help.sap.com/saphelp_srm50/helpdata/en/01/2ee339a327f136e10000000a11402f/frameset.htm
    http://help.sap.com/saphelp_srm50/helpdata/en/1F/D31A9FCB00459FAA571F09E89A5CBA/content.htm
    http://help.sap.com/saphelp_srm50/helpdata/en/6B/9B36E95CF44963B7A84EFF83F2481F/content.htm
    Anyways, these fields once get transferred from catalog will come to the Shopping cart... You can map then in BBP_DOC_CHANGE_BADI  / BBP_CATALOG_TRANSFER BADI as well.
    Let me know incase you need further assistance.
    Regards
    - Atul

  • How to get the custom integrator in Manage Document Links

    Hi All,
    My requirement is "Creating Word Documents Using Web ADI", I am following the document
    Oracle® Human Resources Management Systems
    Configuring, Reporting, and System Administration Guide
    Release 12.1
    Part No. E13509-02
    From page no. 194.In that section, No.8. Use the Manage Layout Document Links page to create a link between the
    integrator and layout and the Word template.
    See: Creating Links between Template Letters and Layouts, page 2-33
    2-33>>
    Select Manage Document Links from the Web ADI menu.
    But when I click on the "Manage Document Links", I couldn't see my custom integrator to associate my word document with my integrator.
    I could see only the standard integrators.
    How to get my custom integrator in "Manage Document Links". I could see my custom integrator in define layout but not in this page.
    Thanks.
    With Regards,
    Kali.

    Hussein,
    Thanks for your reply.
    I followed the
    Note 360105.1 -Understanding and Using Web ADI in Oracle HRMS, and the section "Letters",
    I could follow all the steps, except the following,
    The reason is, when I click on Manage Documents Links, I am not getting my newly created integrator.
    If I link a standard integrator "HR People Details" to my document, that is opening properly.
    But I am not able to link my document with my integrator(which is based on my view).
    c.  Now link the template letter to the Letter Integrator and Layout.
    If not already done so, Add the function WebADI Manage Document Links to your Web ADI menu, and give it a prompt of Link Document.
    Select Link Document option , and Web ADI Mail Merge page displays. Choose your Letter Integrator. Link it to the Layout, and a list of template documents uploaded to the database is displayed. Select the template letter to be linked with the layout.
    Thanks.
    With Regards,
    Kali.

  • SP Designer 2010 - Saving custom list form impacts other list and other custom list form

    Hi,
    I have a source list, with custom display, edit and new forms all of them created in SP Designer 2010. These do nothing fancy, just for presentation purposes, fields were re-arranged in 2 columns.
    Then I created a target list by saving the source list as template, the template brought over all customizations, all seemed to work fine. So I started to modify the target custom list forms.
    Now here's the problem:
    After a while making changes to the target list I realized that somehow the custom list forms on the source list had been modified... so I opened the source list in designer and noticed that the out of the box forms: NewForm.aspx, DispForm.aspx, EditForm.aspx
    were now the default forms for the source list, and I couldn't pick my custom list forms to be the default forms for the source list anymore, they were not on the listbox. I could still see them by going in designer to All Files > Lists > SourceList
    > and if I previewed them, they were empty. 
    I believe that somehow source and target list are linked, but why would designer allow making changes to the source list? like resetting the default forms, and breaking up the custom list forms that were in place?
    I've verified list id's in the custom list forms of the target list and they belong to the GUID of the target list. I don't see anything else that could potentially point to the source list.
    SharePoint Designer 2010 version: 14.0.7007.1000 SP2 14.0.7015.1000 I don't think this matters much because I've tried with other SP Designer 2010 versions and the error is the same.
    thanks for your reply!

    Hi alec,
    When I create a custom EditForm1.aspx and set as default for a source list, then save this list as a template, then the newly created the target list based off this saved template, the source list still uses the custom EditForm1.aspx form as default
    form, from SharePoint designer, I can see these two lists have different listID, so they have no connection when I edit any one of them.
    Please recreate a new list with custom form page and save as template, then create a new list see if this issue could be reproduced, or we can create a new list instead if it is an isolate issue.
    Thanks,
    Daniel Yang
    Forum Support
    Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact
    [email protected]
    Daniel Yang
    TechNet Community Support

  • Business Partner Creation for Sales Customer

    Hello,
    I am almost certain this question was asked before, but I couldn't seem to find the answer.
    I have an external customer number that needs to be passed in from a 3rd-party system to SAP ECC 5.0 (part of ERP 2004).  I could use BAPI BAPI_BUPA_CREATE_FROM_DATA to create the customer in BUT000 table.  Since this is really a sales customer, I was hoping this customer can be duplicated/transferred to KNA1 table.  Without doing this, this external BP # does not show up in my dropdown list when I create an order.  I also tried to use BAPI BAPI_BUPA_FS_CREATE_FROM_DATA2 to create this external customer by adding a role "FLCU00", but I still couldn't find this customer in the KNA1 table.  I also looked at a couple more options such as BAPI_CUSTOMER_CREATE and BAPI_CUSTOMER_CREATEFROMDATA1, but as far as I know the first one is online dialog mode, and the 2nd one does not seem to allow exteral customer number.  Does any know whether it is possible to use BAPI_BUPA_CREATE_FROM_DATA or BAPI_BUPA_FS_CREATE_FROM_DATA2 to create an entry in KNA1?  Is it more a config issue or technically it is not possible?  Please advise.  Your help is appreciated!!!
    Regards,
    Chao

    Thanks for your clue.  I will look into it.  Maybe IDoc approach is what I need to use.
    Ultimately, we want to use KNA1 customers to create sales orders.  We don't have mySAP CRM, so ERP is what I am trying to interface to from an external system.  I thought SAP is trying to centralize the business partners, so that's why I was walking down on the path of creating BPs, hoping they will be replicated back to KNA1.  I worked on IS products before, and they seem to work this way (replication).  However, by thinking about it more, it may make more sense to have customers created in KNA1 and through some type of conversion replicate customers in KNA1 to BUT000 some time down in the road if BP is what the customer will be using in the future with other mySAP products.  I wonder if anyone can validate this thought(meaning converting KNA1 customers to BPs) for me.  Thanks in advance!!!

  • Drawing 2d line chart problem, urgent please!!!

    Hello,
    can anyone help me with the function GRAPH_MATRIX_2D please,
    i couldn't draw a line graph with three data series, i mean with three lines in the graph.
    i want to the chart to be drawn as line graph at the beginning, i shouldn't have to change the chart type later,
    can anybody send me a sample code that does what i want.
    i am expecting your answers,
    thanks.

    Hi,
    have you checked the two reports Matthias mentioned?
    After downloading the SAP Chart Designer the general procedure should look like: create your chart settings interactively using the designer. Save these settings as a local XML file. Use this XML in your ABAP application and additionally create a data XML at runtime (the format is described in the pdf of the SAP Chart Designer zip).
    Regards, Kai
    PS: Please don't use these very outdated function modules graph_matrix* / grstat* in new projects!

  • How to draw a simple line chart using GRAPH_MATRIX_2D function

    Hello,
    can anyone help me with that function please,
    i couldn't draw a line graph with three data series, i mean with three lines in the graph.
    i want to the chart to be drawn as line graph at the beginning, i shouldn't have to change the chart type later,
    can anybody send me a sample code that does what i want.
    i am expecting your answers,
    thanks.
    Note: all answers will be pointed.

    Hi Ali,
    please refer to my reply [here|Re: drawing 2d line chart problem, urgent please!!!] and skip this thread. This is a copy of the other request.
    Regards
    Matthias

  • Forcing a canvas to draw off screen for printing.

    I have a process where I am trying to print a canvas that has not yet been shown.   So basically how do I force it to draw it's components without displaying it to the user.  If I add it to the print job it is blank.. If I first display it visually on the screen it is printed.  But only the visble portion is printed.. I have read up on printing and I understand why only the visble range is printed, but I would like to draw a custom sized canvas and then just print it..
    I have spent a couple of days on this and I feel like I am just missing something.
    I would like to do something like following:
    1.  Grab my canvas object
    2.  Set the height and width;
    3.  Instantiate the drawing routine.
    4.  Add it to the printJob.
    Thanks in advance.

    int() is always popular.

  • Are you drawing text at an angle with TextRenderer?

    This is a question for folks that are aware of the difference in quality of output between TextRenderer.DrawText and (Graphics.DrawString + Graphics.TextRenderingHint = Text.TextRenderingHint.AntiAlias). It is an issue that has been discussed by others,
    elsewhere, without resolution, and I'm simply asking if anyone has come up with a workaround.
    I want to render text in the quality of TextRenderer.DrawText, at right angles or upside down. TextFormatFlags.PreserveGraphicsTranslateTransform ignores calls to RotateTransform on the Graphics object that exposes IDeviceContext to DrawText, and DrawText doesn't
    play nicely with bitmaps.
    Has anyone figured out a way to draw text at the same quality provided by TextRenderer.DrawText, at an angle other than 0 degrees?
    (For those who need a back story to prove to you that I cannot use a Label or Graphics.DrawString for this, here you go.
    There is a cat stuck in a tree in my back yard. I would like to rescue him, but there is a troll standing between me and the tree. He's a nasty troll, but on TV he plays a happy-go-lucky helpful troll, so when I call the police to complain, they just laugh
    at me. "Ha! You can't fool us! We watch TV!"
    The troll will allow me to reach the cat if I provide him with a UserControl that renders text at the same quality as the Windows.Forms.Label control, but at angles 90, 180 and -90 degrees. He is a clever troll in that he notices details between shoddy and
    neat; rough and smooth; ugly and pretty; cat and honey badger. Therefore, I have not been able to fool him into thinking that ugly text is pretty by asserting that ugly text is pretty. Argh. I dislike this troll.)

    And this has to do with
    Usability Steven's
     issue in what fasion and why are you responding to somebody elses issue
    Mick Doherty? Or is this just for my information?
    La vida loca
    Hi Monkey
    This was mainly for info, but the OP did question the difference between GDI and GDIPlus methods of drawing rotated text. Your example only provides a GDIPlus method.
    GDI does not respect the Graphics objects rotations, but so long as the PreserveGraphicsTranslateTransform flag is set it will respect Translations.
    Here's a simple example to highlight the issue:
    Public Class Form1
    Public Sub New()
    ' This call is required by the designer.
    InitializeComponent()
    ' Add any initialization after the InitializeComponent() call.
    Me.SetStyle(ControlStyles.ResizeRedraw, True)
    End Sub
    Private Sub Form1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    Dim testString As String = "My Test String"
    Dim angle As Single = 0
    If Me.CheckBox1.Checked Then angle = 180
    Using testFont As New Font("Arial", 24, FontStyle.Regular, GraphicsUnit.Point)
    Dim rc As Rectangle = Me.ClientRectangle
    rc.Offset(0, -24)
    Me.DrawRotatedGDIText(e.Graphics, testString, testFont, rc, Color.Red, angle)
    rc.Offset(0, 48)
    Me.DrawRotatedGDIPlusText(e.Graphics, testString, testFont, rc, Color.Black, angle)
    End Using
    End Sub
    Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged
    Me.Invalidate()
    End Sub
    Private Sub DrawRotatedGDIText(graphics As Graphics, text As String, font As Font, bounds As Rectangle, color As Color, rotation As Single)
    Dim sz As Size = TextRenderer.MeasureText(text, font)
    Dim centre As Point = bounds.Location
    centre.Offset(bounds.Width \ 2, bounds.Height \ 2)
    Dim offset As Point = New Point(-sz.Width \ 2, -sz.Height \ 2)
    graphics.TranslateTransform(centre.X, centre.Y)
    graphics.RotateTransform(rotation)
    TextRenderer.DrawText(graphics, text, font, offset, color, TextFormatFlags.PreserveGraphicsTranslateTransform)
    graphics.ResetTransform()
    End Sub
    Private Sub DrawRotatedGDIPlusText(graphics As Graphics, text As String, font As Font, bounds As Rectangle, color As Color, rotation As Single)
    Dim sz As Size = graphics.MeasureString(text, font).ToSize
    Dim centre As Point = bounds.Location
    centre.Offset(bounds.Width \ 2, bounds.Height \ 2)
    Dim offset As Point = New Point(-sz.Width \ 2, -sz.Height \ 2)
    graphics.TranslateTransform(centre.X, centre.Y)
    graphics.RotateTransform(rotation)
    Using myBrush As New SolidBrush(color)
    graphics.DrawString(text, font, myBrush, offset)
    End Using
    graphics.ResetTransform()
    End Sub
    End Class
    Here you can see the GDI string (red text) is rendered differently to the GDI Plus string (black text) i.e. the GDI Plus text is longer. Both strings have been rendered to the correct location as set by the graphics transformation:
    Here a Rotation to the graphics object has been performed, but the GDi method has totally ignored it:
    As a rule, Win32 based controls render with GDI rather than GDI+ and so if we wish to draw a custom control which appears similar to a Win32 based control we need to render with GDI. If you've ever tried to ownerdraw a tabcontrol then you will have noticed
    that the text does not always fit on the tabs if we've used GDI+. using GDI the text fits perfectly, but when we side align the tabs the text does not rotate. We can, as the OP has done, draw unrotated text to a bitmap and then rotate the bitmap and this
    works well if we have a solid background. If we have a textured background however, this method is not acceptable.
    Mick Doherty
    http://dotnetrix.co.uk
    http://glassui.codeplex.com

  • COMPLAINT: Nonexistent customer service for hacked iTunes account!

    Since I couldn't find a "Customer Service" forum, and there is no useful email address, support form or phone number to address this issue, I'm posting this here where I hope someone can actually help.
    My wife's iTunes account was compromised within the last few days, and whoever took over her account racked up HUNDREDS of dollars in fraudulent charges. She was able to get PayPal to terminate its connection with iTunes so that no more charges could be made, and she was able to reset the password on her account using the web form. But we have been completely unsuccessful in getting ANY help from Apple on this issue.
    We tried contacting 1-800-MY-APPLE and tried several support options in that system. The first time we managed to reach a human, he HUNG UP on us. The second time, my wife was told there was nothing he could do, and that she would have to fill out an online form. Said form gives no indication of how long it will take to get a response.
    Tonight, my wife got a response from someone at a support center connected to Apple, who apparently CANNOT write in coherent English, and who is saying he cannot find any fraudulent charges on her account. Needless to say, she is not at all pleased, and neither am I.
    Apple, please have a COMPETENT customer support representative contact me IMMEDIATELY. (You should be able to see my contact information in my AppleID account.) Or give me a contact phone number or email address to which we can get someone who knows what they're doing.
    Thank you.

    More's the pity. If nothing else, I want other users to be aware that we've already tried that support form and have gotten no support from Apple. Protect your accounts by changing your passwords if you haven't already, because if someone breaks into your account and makes unauthorized purchases, you won't be able to count on anyone from the company to help you.

  • How to create customized F4 Help of InfoObject in BW

    Hi, buddies
    Does anyone know how to create customized F4 help for an InfoObject?
    What I need to do is when user clicks F4 help on the variable screen of query, only certain master data values should be displayed, not all of them.
    Currently, I can only make setting in InfoObject to restrict the F4 value either in master data or in Cube. I couldn't create a customized F4 value list.
    Thanks,
    Wei

    Hi,
    i have H4 Help problem.
    how can i restrict an attributes of infoobject in H4 Help value.
    Please help me
    Madhu

  • How can I make a drawing stable and not disappear?

    When I draw some shapes in a panel, if another window goes over the panel, then the drawing disappears and I have to draw it again.
    How can I make the drawing stable?

    Encephalopathic wrote:
    Of course you've read the graphics tutorials, and you are doing all of your drawing in a paintComponent(Graphics g) method override, correct?Encephalopathic is correct. If you want the stuff you draw to persist, you should override paintComponent() and redraw everything there. Just because you've drawn something on a component once (say, a line or an Image) does not mean it'll be redrawn the next time the component needs to be painted. You have to re-draw your custom stuff every time a repaint event is sent to the component, and that means overriding paintComponent().
    If your component will have lots of custom painting done to it (such as if you're making a MS Paint-style program), you might want to consider drawing to a BufferedImage, then in your component's paintComponent() override, just rendering the BufferedImage. Check the documentation for more details.

  • Drawing API - Blurred Edges

    Hey there,
    How come any time I use the drawing API in AS3, or FXG in MXML, certain Paths or shapes, do NOT look crisp. They are clearly blurred on some of their edges.
    Straight Rect shapes do not have this problem, but when drawing a custom shape, the edges of the fill are always blurred.
    Anyone know of a way to have it look clean?

    I have tried both your suggestions.
    I confirmed that in one case, all the points land on an integer, and then confirmed a second case where they landed on (interger + .5)...both have the same blurry issues.
    This is something I've noticed for a long time with the drawing API, but am just tired of having to come up with excuses to tell designers why Flash is drawing blurry vector shapes.
    There has got to be an answer for this.

Maybe you are looking for