package com.googlecode.lanterna.terminal.swing;

import com.googlecode.lanterna.TerminalPosition;

import java.awt.*;
import java.awt.font.TextHitInfo;
import java.awt.im.InputMethodRequests;
import java.text.AttributedCharacterIterator;

class TerminalInputMethodRequests implements InputMethodRequests {

    private Component owner;
    private GraphicalTerminalImplementation terminalImplementation;
    
    public TerminalInputMethodRequests(Component owner, GraphicalTerminalImplementation terminalImplementation) {
        this.owner = owner;
        this.terminalImplementation = terminalImplementation;
    }
    
    @Override
    public Rectangle getTextLocation(TextHitInfo offset) {
        Point location = owner.getLocationOnScreen();
        TerminalPosition cursorPosition = terminalImplementation.getCursorPosition();

        int offsetX = cursorPosition.getColumn() * terminalImplementation.getFontWidth();
        int offsetY = cursorPosition.getRow() * terminalImplementation.getFontHeight() + terminalImplementation.getFontHeight();

        return new Rectangle(location.x + offsetX, location.y + offsetY, 0, 0);
    }

    @Override
    public TextHitInfo getLocationOffset(int x, int y) {
        return null;
    }

    @Override
    public int getInsertPositionOffset() {
        return 0;
    }

    @Override
    public AttributedCharacterIterator getCommittedText(int beginIndex, int endIndex, AttributedCharacterIterator.Attribute[] attributes) {
        return null;
    }

    @Override
    public int getCommittedTextLength() {
        return 0;
    }

    @Override
    public AttributedCharacterIterator cancelLatestCommittedText(AttributedCharacterIterator.Attribute[] attributes) {
        return null;
    }

    @Override
    public AttributedCharacterIterator getSelectedText(AttributedCharacterIterator.Attribute[] attributes) {
        return null;
    }
}