// ウィンドウ作成
var win = new Window("palette", "ウィグル追加", undefined);
win.orientation = "column";

// スライダーUIの作成
win.add("statictext", undefined, "周波数 (Frequency):");
var freqInput = win.add("edittext", undefined, "10");
freqInput.characters = 4;

win.add("statictext", undefined, "振幅 (Amplitude):");
var ampInput = win.add("edittext", undefined, "2");
ampInput.characters = 4;

// ウィグル種類の選択ドロップダウン
win.add("statictext", undefined, "ウィグルタイプ:");
var wiggleTypeDropdown = win.add("dropdownlist", undefined, ["標準ウィグル", "スムーズウィグル", "ランダム動作"]);
wiggleTypeDropdown.selection = 0; // デフォルトは標準ウィグル

// ボタンの作成
var btnPosition = win.add("button", undefined, "位置");
var btnRotation = win.add("button", undefined, "回転");
var btnScale = win.add("button", undefined, "スケール");

// ボタンのクリックイベント
btnPosition.onClick = function () { applyExpression("position"); };
btnRotation.onClick = function () { applyExpression("rotation"); };
btnScale.onClick = function () { applyExpression("scale"); };

// エクスプレッション適用関数
function applyExpression(propName) {
    var comp = app.project.activeItem;
    if (!comp || !(comp instanceof CompItem)) {
        alert("コンポジションを開いてください。");
        return;
    }

    var selectedLayers = comp.selectedLayers;
    if (selectedLayers.length === 0) {
        alert("レイヤーを選択してください。");
        return;
    }

    // ユーザーが選択した値を取得
    // var frequency = parseFloat(freqInput.value.toFixed(1));
    // var amplitude = parseFloat(ampInput.value.toFixed(0));
    var frequency = parseFloat(freqInput.text);
    var amplitude = parseFloat(ampInput.text);
    var wiggleType = wiggleTypeDropdown.selection.index;

    // ウィグルのエクスプレッションを生成
    var wiggleExp = "";
    switch (wiggleType) {
        case 0: // 標準ウィグル
            wiggleExp = "wiggle(" + frequency + ", " + amplitude + ");";
            break;
        case 1: // スムーズウィグル
            wiggleExp = "smoothWiggle(" + frequency + ", " + amplitude + ");";
            break;
        case 2: // ランダム動作
            wiggleExp = "random(-" + amplitude + ", " + amplitude + ");";
            break;
    }

    app.beginUndoGroup("ウィグルエクスプレッション追加");

    for (var i = 0; i < selectedLayers.length; i++) {
        var layer = selectedLayers[i];
        var property = null;

        if (propName === "position" && layer.property("Position")) {
            property = layer.property("Position");
        } else if (propName === "rotation") {
            if (layer.threeDLayer) {
                property = layer.property("Rotation") || layer.property("zRotation");
            } else {
                property = layer.property("Rotation");
            }
        } else if (propName === "scale" && layer.property("Scale")) {
            property = layer.property("Scale");
        }

        if (property) {
            property.expression = wiggleExp;
        }
    }

    app.endUndoGroup();
}

// ウィンドウを表示
win.center();
win.show();